This is the mail archive of the binutils@sourceware.org mailing list for the binutils 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]

RFC: Objcopy --only-keep-debug update


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.

Attachment: objcopy.only-keep-debug.patch.2
Description: Unix manual page


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