Improve separate debug file support for elfutils

Jan Kratochvil jan.kratochvil@redhat.com
Sat Oct 14 23:45:00 GMT 2006


Hi Daniel,

thanks for this patch. Unfortunately using CVS + this patch the problem is
still present:
	Reading symbols from /lib/modules/2.6.18-1.2747.fc6/kernel/fs/ext3/ext3.ko...Reading symbols from /usr/lib/debug/lib/modules/2.6.18-1.2747.fc6/kernel/fs/ext3/ext3.ko.debug...DW_FORM_strp pointing outside of .debug_str section [in module /usr/lib/debug/lib/modules/2.6.18-1.2747.fc6/kernel/fs/ext3/ext3.ko.debug]

These two testfiles stored at:
	http://www.jankratochvil.net/priv/ext3-debug.tar.gz

According to the error I believe the patch also needs to cover libbfd.
Is it valid it still needs to be patched for this case?

Jakub Jelinek was confirming before that elfutils produce in some way valid
ELFs - with the missing strtab/symtab.  I did not check the binaries myself.


Thanks for info,
Jan


On Fri, 06 Oct 2006 22:25:50 +0200, Daniel Jacobowitz wrote:
> It turns out that elfutils's eu-strip differs from objcopy --only-keep-debug
> in one important respect: elfutils tends to leave .symtab in the original
> file and put a NOBITS copy in the separate debug file, but objcopy moves the
> whole symtab.  This difference shows up a problem in GDB.
> 
> We search for the section containing the PC in a bunch of places, mostly for
> overlay support (does this even still work?  no idea).  When we look up the
> section for the PC, we might find either the copy in the separate debug file
> or the original; they cover the same PC ranges.  So we need to allow the
> two sections to be treated as equal.  That's what this patch implements.
> I'm not sure how well it would work with overlays - but I don't see a way,
> even in theory, to do better.
> 
> The change to "info sym" is a cosmetic improvement, which I made while
> trying to find a way to test this portably.  The original test was on ARM
> with Thumb; we would try to look up the minsym to figure out whether to
> set a 2-byte or 4-byte breakpoint, and by failing to find the minsym,
> we set the wrong type.
> 
> I plan to commit this, probably next week, unless someone happens to have
> an idea for another solution.  Tested x86_64-pc-linux-gnu.
> 
> -- 
> Daniel Jacobowitz
> CodeSourcery
> 
> 2006-10-06  Daniel Jacobowitz  <dan@codesourcery.com>
> 
> 	* Makefile.in (symtab.o): Update.
> 	* symtab.h (matching_bfd_section): New prototype.
> 	* symtab.c (matching_bfd_section): New.
> 	(find_pc_sect_psymbol, find_pc_sect_symtab): Use it.
> 	* minsyms.c (lookup_minimal_symbol_by_pc_section): Likewise.
> 	* printcmd.c (sym_info): Ignore separate debug objfiles.
> 
> 2006-10-06  Daniel Jacobowitz  <dan@codesourcery.com>
> 
> 	* gdb.base/sepdebug.exp: Remove debug format test.
> 	* lib/gdb.exp (gdb_gnu_strip_debug): Perform debug format test.
> 	Handle no-symtab.
> 	* gdb.base/sepsymtab.c, gdb.base/sepsymtab.exp: New.
> 
[snip]



More information about the Gdb-patches mailing list