Dear gdb gurus,

I found the bug in gdb-5.0.

In the routine (symtab.c) find_pc_sect_psymtab, the short-circuit logic can
prevent the continued traversal of the ALL_PSYMTABS, causing nested shared
objects to be masked by the parent shared object.  (The nested shared
objects can have their pc as a subrange of the parent shared objects
textlow/texthigh range.)

I added an extra local variable...
    register struct partical_symtab *best = NULL;

And changed "return (pst);" fallback to...
    /* Best we've got so far, but it's still unimpressive. */
    /* Maybe a more likely match further down the chain. */
    best = pst;

And changd the final "return (NULL);" to...
    return (best);

Problem solved in 4 days of scrutinizing gdb code.  Three line change.
*whew*

Sincerely,

John Love-Jensen
Adobe Systems Incorporated

PS:  SunOS 5.8, gcc 2.95.2, gdb 5.0.


_______________________________________________
Bug-gdb mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-gdb

Reply via email to