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

Jim Blandy
2002-09-16T19:26:02Z

Yes, it looks like my patch was broken. The stupid thing is, I never
actually went on to do the rest of the work that patch was supposed to
prepare GDB for, so its effect has been entirely deleterious. :(
H. J.'s trademark bitterness aside, I do care that my patch broke GDB.
I don't remember ever seeing his bug report and patch before; I must
have missed them. I apologize for the trouble that has caused.

Since I don't have any plans to proceed with the work I sketched out
in:

http://sources.redhat.com/ml/gdb-patches/2001-10/msg00304.html

in the immediate future, it makes sense to me to simply revert my
patch. If I start the work again, I can always re-submit the patch,
but with the problem H. J. and Earl found corrected.

Can anyone come up with a test for this that one could run on Linux
native?

"H. J. Lu" <hjl@lucon.org> writes:

> 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.