RFC: Objcopy --only-keep-debug update

Nicholas Clifton nickc@redhat.com
Wed Jul 29 13:21:00 GMT 2015


Hi Guys,

   Right - now that I understand why --only-keep-debug is leaving in the
   section headers of stripped sections, I have a two part patch for you
   to consider.

   The first part updates the binutils documentation, explaining why the
   headers are preserved.  Hopefully this will stop other people from
   falling into the same trap that I fell into, thinking that strip was
   failing to actually delete non-debug sections.

   The second part of the patch fixes a problem with the sh_link fields
   in the stripped section headers - it was always being set to zero.
   Although technically this is valid, it is a problem for other tools
   which try to match up the section headers in the debug-only file with
   the section headers in the stripped-of-debug-info file.  Leaving the
   links intact helps these tools match up the two files.

   One problem I did have with this part of the patch was in determining
   which sections should have their sh_link fields preserved.  In the end
   I had to encode the section names directly, but I feel that their
   ought to be a better way.

   The second part of the patch also adds a testcase to the binutils
   testsuite to check that the sh_link values are preserved.

   Tested with no regressions on lots of different toolchains.

   What do people think - any objections or problems with the patch ?

Cheers
   Nick

bfd/ChangeLog
2015-07-29  Nick Clifton  <nickc@redhat.com>

	* elf.c (sec_links_to_symtab): New function.
         (sec_links_to_strtab): New function.
         (assign_section_numbers): Set the sh_link field in NOBITS
         sections that would have that field set if their type was not
         NOBITS.

binutils/ChangeLog

	* doc/binutils.texi (objcopy): Note the --only-keep-debug
	retains the headers of stripped sections.
         (strip): Likewise.

binutils/testsuite/ChangeLog

	* binutils-all/objcopy.exp (keep_debug_symbols_and_check_links):
	New proc/test.  Checks the sh_link fields of NOBITS sections in
	a --only-keep-debug stripped executable.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: objcopy.only-keep-debug.patch.2
Type: application/x-troff-man
Size: 8217 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/binutils/attachments/20150729/b725028a/attachment.2>


More information about the Binutils mailing list