Fix stripping relocs in a file with mergeable notes.
authorNick Clifton <nickc@redhat.com>
Fri, 8 Dec 2017 10:07:14 +0000 (10:07 +0000)
committerNick Clifton <nickc@redhat.com>
Fri, 8 Dec 2017 10:07:14 +0000 (10:07 +0000)
commit2d054e6bfdfb0f58fb9cc501c29327df34fec697
tree9ac200639d7ff30b0da20b6ad2d431a5bbb35b1e
parentc8bed57010e8789212a6841db4b397b175a00f9e
Fix stripping relocs in a file with mergeable notes.

  A recent Fedora bug (1520805) exposed a problem with objcopy's reloc
  copying code, when a binary also contains mergeable notes.  The note
  merging code would delete some relocs, but then the reloc copying code
  would try to put them back again, which did not work.

  So I am checking in the patch below to fix the problem.  The patch
  also tweaks one of the binutils note merging tests so that it is
  skipped for the Sparc64 target, since this has funky relocs.

binutils * objcopy.c (copy_relocations_in_section): Use the orelocations
field of the input section, if it has been initialised.
* testsuite/binutils-all/note-2-64.d: Skip test on Sparc64.

bfd * elfcode.h (elf_write_relocs): Check for an empty howto field.
bfd/ChangeLog
bfd/elfcode.h
binutils/ChangeLog
binutils/objcopy.c
binutils/testsuite/binutils-all/note-2-64.d