Re: Mystified by "Internal error: pc 0x89f21e10 read in psymtab, but not in symtab

H. J. Lu
2002-09-16T14:03:38Z

On Sun, Sep 15, 2002 at 09:42:51PM -0700, Earl Chew wrote:
> H. J. Lu wrote:
> > That patch is broken. See
> >
> > http://sources.redhat.com/ml/gdb/2002-03/msg00197.html
> > http://sources.redhat.com/ml/gdb/2002-03/msg00202.html
> >
> > Unfortunately, no one seems to care.
>
> I care, I care!
>
> How eerie. I wrote a set of changes this morning, and now comparing
> with your changes --- it's uncanny how close they are.
>
> I enclose my patches below for you to peruse. I have some questions
> regarding some minor differences:
>
> a. I figured it was better in general to invoke the relocation function
> pointer with the section offset structure, and let each
> implementation figure out what relocations are required. I
> thought that some implementations (in the future) might cache
> things other than text locations (eg data locations).

I don't think it helps since objfile_relocate only does offset. If you
pass delta, it is no longer symmetric. You don't want to use the same
function to do more than one thing here. You can always change it
together when you modify objfile_relocate later.

>
> b. In dbxread.c, I initialise the relocate_symtab pointer in
> start_psymtab _and_ end_psymtab (where the code loops and allocates
> new psymtabs and copies values across).
>
> Your patch doesn't initialise the function pointer here, and I
> believe that this will result in an uninitialised field.

I might miss that one.

H.J.