This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Symbols in same range


At 13:13 13.12.2006 -0500, Daniel Jacobowitz wrote:
>On Wed, Dec 13, 2006 at 09:44:47AM +0100, Fabian Cenedese wrote:
>> Is it correct to have several symbols in the same symtab range? Like:
>
>Yes, this is not uncommon.  For instance, if one source file defines
>linkonce routines or functions in multiple sections.
>
>I have worked on several problems related to this one lately.  Are you
>using GDB HEAD?  If not, does it do any better?  Does the patch in this
>message help?
>  http://sourceware.org/ml/gdb-patches/2006-12/msg00005.html

Unfortunately not. But then again I'm on 6.5 so there may be other
changes related to it. I can't change to HEAD right now but maybe
some time later.

"This is a loop over all psymtabs and a fearsome lot of symbol lookups;"

Yeah, I sometimes thought so as well :)

>> The found msymbol is always correct, but when gdb continues to find
>> the corresponding block it takes the symtab from a wrong file. But the
>> addresses in there don't match (only the range) and the returned
>> result is .line=0.
>
>There should be a psymbol in the correct psymtab which is closer to the
>specified pc.  What symbols are at or directly before that location?
>
>> Is this an error in the finding strategy of gdb, like, it should look
>> in all symtabs and not only in the first whose range matches?
>
>It should find the correct psymtab.  You'll see that
>find_pc_sect_psymtab actually loops over them all.

I'm sure now that the algorithm is working fine. The main problem
is that there are no matching psymtabs.

find_pc_sect_psymtab (CORE_ADDR pc, asection *section)
...
  ALL_PSYMTABS (objfile, pst)
  {
    if (pc >= pst->textlow && pc < pst->texthigh)

The biggest pst->texthigh is the one from the last symbol in the
.text section. For some reason there are no psymbols for the
other code sections. So my problem lies probably more in the
reading and creating of those symbols, or even in gcc's debug
info.
When I put the other code in the .text section as well it works
fine.

Thanks

bye  Fabi



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]