Improve objcopy's note mergeing capabilities.
authorNick Clifton <nickc@redhat.com>
Fri, 25 Oct 2019 15:46:07 +0000 (16:46 +0100)
committerNick Clifton <nickc@redhat.com>
Fri, 25 Oct 2019 15:46:07 +0000 (16:46 +0100)
commit5c49f2cd78c69d50bc7c7119596a226f05939d06
tree9576132049dfa4a3fdf2cd5e4697d04c8bed02b6
parent27cee81d06fcff87d9c026a571db58c29c489dfa
Improve objcopy's note mergeing capabilities.

* objcopy.c (struct merged_note_section): New structure.  Used to
chain together details of mergeable note sections.
(is_merged_note_section): Rename to is_megreable_note_section and
return true for note sections that use GNU_BUILD_ATTRS_SECTION_NAME
as a prefix.
(num_bytes): Delete
(objcoopy_internal_note): Add padded_namesz field.
(DEBUG_MERGE): New macro.  Set to non-zero to enable debugging of
the note merging code.
(gap_exists): Rename to overlaps_or_adjoins and return TRUE for
overlapping notes or adjoining notes.
(contained_by, is_deleted_note, is_version_note)
(compare_gnu_build_notes, sort_gnu_build_notes): New functions.
(merge_gnu_build_notes):  Rework.  Sort notes into a mergeable
order first.  Merge them.  Then sort them into an ascending
address order before writing them out.
(copy_object): Handle more than one mergeable note section.
* testsuite/binutils-all/note-2-32.d: Update for new merging
behaviour.
* testsuite/binutils-all/note-2-32.s: Likewise.
* testsuite/binutils-all/note-2-64.d: Likewise.
* testsuite/binutils-all/note-2-64.s: Likewise.
* testsuite/binutils-all/note-3-32.d: Likewise.
* testsuite/binutils-all/note-3-32.s: Likewise.
* testsuite/binutils-all/note-3-64.d: Likewise.
* testsuite/binutils-all/note-3-64.s: Likewise.
* testsuite/binutils-all/note-4-32.d: Likewise.
* testsuite/binutils-all/note-4-32.s: Likewise.
* testsuite/binutils-all/note-4-64.d: Likewise.
* testsuite/binutils-all/note-4-64.s: Likewise.
* testsuite/binutils-all/note-6-32.s: New test source file.
* testsuite/binutils-all/note-6-64.s: New test source file.
* testsuite/binutils-all/note-6-32.d: New test driver file.
* testsuite/binutils-all/note-6-64.d: New test driver file.
* testsuite/binutils-all/objcopy.exp: Run the new test.
19 files changed:
binutils/ChangeLog
binutils/objcopy.c
binutils/testsuite/binutils-all/note-2-32.d
binutils/testsuite/binutils-all/note-2-32.s
binutils/testsuite/binutils-all/note-2-64.d
binutils/testsuite/binutils-all/note-2-64.s
binutils/testsuite/binutils-all/note-3-32.d
binutils/testsuite/binutils-all/note-3-32.s
binutils/testsuite/binutils-all/note-3-64.d
binutils/testsuite/binutils-all/note-3-64.s
binutils/testsuite/binutils-all/note-4-32.d
binutils/testsuite/binutils-all/note-4-32.s
binutils/testsuite/binutils-all/note-4-64.d
binutils/testsuite/binutils-all/note-4-64.s
binutils/testsuite/binutils-all/note-6-32.d [new file with mode: 0644]
binutils/testsuite/binutils-all/note-6-32.s [new file with mode: 0644]
binutils/testsuite/binutils-all/note-6-64.d [new file with mode: 0644]
binutils/testsuite/binutils-all/note-6-64.s [new file with mode: 0644]
binutils/testsuite/binutils-all/objcopy.exp