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

Ron McCall
2005-11-15T01:07:27Z

On Sun, Nov 13, 2005 at 12:39:04PM -0500, Daniel Jacobowitz wrote:
> What debugging format are you using - stabs or dwarf2? I don't know
> offhand what could be causing this, and it's unlikely that a newer
> snapshot will make a difference - that's pretty current.

I think it is dwarf2 (there are no sections with "stab" in the name,
just using -g). I am using gcc-4.0.2 (also happens with gcc-4.0.1) with
binutils 2.16.1 and newlib 1.13.0, all the latest (released) versions,
in case that matters at all.

By the way, I did try a newer snapshot but still got the same result, as
you suspected. I ran the cross gdb under a native gdb to try to see
what was happening. With a breakpoint on find_pc_sect_symtab() in
symtab.c and a single command input of "disas 0xd00 0xd04" there are
several calls to this function. I can re-run the test to get specific
input values if that would help. If I remember correctly, the call that
resulted in the warning message being printed had inputs of pc=0 and
section=0.

If I enter "disas main" instead, no warnings are printed. There is a
symbol at 0xd00 named trace_exc and "disas trace_exc" also generates the
warnings. Note that the trace exception handler is written in assembly
(GNU as) and normally resides in a custom section named "excvectbl".
However, I changed that to ".text" just to make sure it wasn't the
custom section that was causing grief and that didn't help.

Anything else I should look at?

Thanks!

Ron McCall