RE: gdb not detecting function sections correctly for functions in overlays

Arnab Bhaduri <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <D3CD0638AD056342925227F12D6A2AB50913E2E289@MAILSJ3.global.cadence.com>
Thanks for your reply. Yes, I came to the same conclusion after digging around in the DWARF information. I had not been familiar with DWARF, or else I might have reached that conclusion much sooner.

I have made a couple of local changes that make things work better for me. Perhaps you could give me your opinion on these (described below).

1) add_location_to_breakpoint() (breakpoint.c) - this calls set_breakpoint_location_function() which sets the function name incorrectly because it uses the PC-to-section lookup. I modified this like so: if the "symtab_and_line * sal" argument's section is an overlay section, and sal->symtab is not null, then walk over all the symbols in the symtab and find the one with a line number that is closest to (but not larger than) the line number specified in the sal. With this best match symbol, search all the overlay sections for a name match. If there is a match, select that overlay section and update the bp_location. Of course this will not work if e.g. I define two functions with the same name in two different overlays. In that case I warn the user and arbitrarily choose the first one found.

2) find_function_start_sal() (symtab.c) - this calls find_pc_sect_line() to look up the section, and fails when the PC-to-section lookup fails for overlays. It was not clear to me why it does not use the symtab in the symbol itself, which is passed in as an argument. I made a change here to use the symbol's symtab if it has one.

Arnab

> -----Original Message-----
> From: Tom Tromey [mailto:[email protected]]
> Subject: Re: gdb not detecting function sections correctly for functions
> in overlays
> 
> objdump --syms will show the ELF symbols, but not the DWARF symbols.
> But if you have debuginfo, gdb will generally prefer the DWARF.
> This may explain the discrepancy there.
> 
> Maybe this is a regression from my patch series to change how symbol
> sections are represented.  That would be my guess, anyway, if earlier
> versions of gdb worked.
> 
> Anyway, there is no high road to fixing this -- just debugging gdb.
> 
> I don't think there's a good way of associating a DWARF symbol with a
> particular overlay.  That seems to be the root of the problem to me.
> 
> Tom
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.