Re: warning: (Internal error: pc 0xd00 in read in psymtab, but not in symtab.)

Jim Blandy
2005-11-16T01:33:32Z

On 11/15/05, Daniel Jacobowitz <drow@false.org> wrote:
> > When we drop a linkonce section, we also drop all relocs referring to
> > symbols defined in that section, or the section's STT_SECTION symbol.
> > (Or do we just make the relocs use STN_UNDEF as their symbol?) If the
>
> Neither, quite. We specifically fail to resolve them because they are
> in .debug_info; otherwise this would be a fatal error.

Do we need some sort of annotation in the debug information itself,
indicating that it's referring to stuff that might go away?

Suppose we had a new reloc type, generic name
BFD_RELOC_SECTION_INCLUDED, whose symbol must be an STT_SECTION
symbol. The reloc refers to a single byte which the linker should set
to one if the symbol's section is present in the resulting object, or
zero if it has been dropped.

Then the appropriate dies could have a DW_AT_GNU_section_included
attribute, DW_FORM_flag, whose operand had that reloc applied to it.

The compiler's chopping the program up into these sections; make it
responsible for telling us what debug info corresponds to what code.

Ideally, the debug info itself would just get edited, but I'm not sure
how we would go about that.