mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-16 04:18:50 +00:00
Add support for displaying and merging GNU_BUILD_NOTEs.
include * elf/common.h (SHF_GNU_BUILD_NOTE): Define. (NT_GNU_PROPERTY_TYPE_0): Define. (NT_GNU_BUILD_ATTRIBUTE_OPEN): Define. (NT_GNU_BUILD_ATTRIBUTE_FUN): Define. (GNU_BUILD_ATTRIBUTE_TYPE_NUMERIC): Define. (GNU_BUILD_ATTRIBUTE_TYPE_STRING): Define. (GNU_BUILD_ATTRIBUTE_TYPE_BOOL_TRUE): Define. (GNU_BUILD_ATTRIBUTE_TYPE_BOOL_FALSE): Define. (GNU_BUILD_ATTRIBUTE_VERSION): Define. (GNU_BUILD_ATTRIBUTE_STACK_PROT): Define. (GNU_BUILD_ATTRIBUTE_RELRO): Define. (GNU_BUILD_ATTRIBUTE_STACK_SIZE): Define. (GNU_BUILD_ATTRIBUTE_TOOL): Define. (GNU_BUILD_ATTRIBUTE_ABI): Define. (GNU_BUILD_ATTRIBUTE_PIC): Define. (NOTE_GNU_PROPERTY_SECTION_NAME): Define. (GNU_BUILD_ATTRS_SECTION_NAME): Define. (GNU_PROPERTY_STACK_SIZE): Define. (GNU_PROPERTY_NO_COPY_ON_PROTECTED): Define. (GNU_PROPERTY_X86_ISA_1_USED): Define. (GNU_PROPERTY_X86_ISA_1_NEEDED): Define. (GNU_PROPERTY_X86_ISA_1_486): Define. (GNU_PROPERTY_X86_ISA_1_586): Define. (GNU_PROPERTY_X86_ISA_1_686): Define. (GNU_PROPERTY_X86_ISA_1_SSE): Define. (GNU_PROPERTY_X86_ISA_1_SSE2): Define. (GNU_PROPERTY_X86_ISA_1_SSE3): Define. (GNU_PROPERTY_X86_ISA_1_SSSE3): Define. (GNU_PROPERTY_X86_ISA_1_SSE4_1): Define. (GNU_PROPERTY_X86_ISA_1_SSE4_2): Define. (GNU_PROPERTY_X86_ISA_1_AVX): Define. (GNU_PROPERTY_X86_ISA_1_AVX2): Define. (GNU_PROPERTY_X86_ISA_1_AVX512F): Define. (GNU_PROPERTY_X86_ISA_1_AVX512CD): Define. (GNU_PROPERTY_X86_ISA_1_AVX512ER): Define. (GNU_PROPERTY_X86_ISA_1_AVX512PF): Define. (GNU_PROPERTY_X86_ISA_1_AVX512VL): Define. (GNU_PROPERTY_X86_ISA_1_AVX512DQ): Define. (GNU_PROPERTY_X86_ISA_1_AVX512BW): Define. binutils* readelf.c (get_note_type): Add support for GNU_BUILD_NOTEs. (get_gnu_elf_note_type): Add support for GNU_PROPERTY_NOTEs. (decode_x86_isa): New function. (print_gnu_property_note): New function. (print_gnu_note): Handle GNU_PROPERTY_NOTEs. (print_gnu_build_attribute_description): New function. (print_gnu_build_attribute_name): New function. (process_note): Add support for GNU_BUILD_NOTEs. * objcopy.c (--merge-notes): New command line option. (copy_options): Add merge-notes. (copy_usage): Likewise. (is_merge_note_section): New function. (merge_gnu_build_notes): New function. (copy_object): Merge note sections if asked to do so. (skip_section): Add skip_copy parameter. Add support for skipping merged note sections. (copy_relocations_in_section): Update call to skip_section. (copy_section): Likewise. (copy_main): Add support for merge-notes option. * doc/binutils.texi: Document the new option to objcopy. * NEWS: Mention the new feature. * testsuite/binutils-all/note-2-32.d: New test. Checks note merging on 32-bit targets. * testsuite/binutils-all/note-2-32.s: New test source file. * testsuite/binutils-all/note-2-64.d: New test. Like note-2-32.d but for 64-bit targets. * testsuite/binutils-all/note-2-64.s: New test source file. * testsuite/binutils-all/objcopy.exp: Run the new test.
This commit is contained in:
@@ -537,6 +537,7 @@
|
||||
|
||||
/* #define SHF_MASKOS 0x0F000000 *//* OS-specific semantics */
|
||||
#define SHF_MASKOS 0x0FF00000 /* New value, Oct 4, 1999 Draft */
|
||||
#define SHF_GNU_BUILD_NOTE (1 << 20) /* Section contains GNU BUILD ATTRIBUTE notes. */
|
||||
#define SHF_MASKPROC 0xF0000000 /* Processor-specific semantics */
|
||||
|
||||
/* This used to be implemented as a processor specific section flag.
|
||||
@@ -670,6 +671,51 @@
|
||||
#define NT_GNU_HWCAP 2 /* Used by ld.so and kernel vDSO. */
|
||||
#define NT_GNU_BUILD_ID 3 /* Generated by ld --build-id. */
|
||||
#define NT_GNU_GOLD_VERSION 4 /* Generated by gold. */
|
||||
#define NT_GNU_PROPERTY_TYPE_0 5 /* Generated by gcc. */
|
||||
|
||||
#define NT_GNU_BUILD_ATTRIBUTE_OPEN 0x100
|
||||
#define NT_GNU_BUILD_ATTRIBUTE_FUNC 0x101
|
||||
|
||||
#define GNU_BUILD_ATTRIBUTE_TYPE_NUMERIC '*'
|
||||
#define GNU_BUILD_ATTRIBUTE_TYPE_STRING '$'
|
||||
#define GNU_BUILD_ATTRIBUTE_TYPE_BOOL_TRUE '+'
|
||||
#define GNU_BUILD_ATTRIBUTE_TYPE_BOOL_FALSE '!'
|
||||
|
||||
#define GNU_BUILD_ATTRIBUTE_VERSION 1
|
||||
#define GNU_BUILD_ATTRIBUTE_STACK_PROT 2
|
||||
#define GNU_BUILD_ATTRIBUTE_RELRO 3
|
||||
#define GNU_BUILD_ATTRIBUTE_STACK_SIZE 4
|
||||
#define GNU_BUILD_ATTRIBUTE_TOOL 5
|
||||
#define GNU_BUILD_ATTRIBUTE_ABI 6
|
||||
#define GNU_BUILD_ATTRIBUTE_PIC 7
|
||||
|
||||
#define NOTE_GNU_PROPERTY_SECTION_NAME ".note.gnu.property"
|
||||
#define GNU_BUILD_ATTRS_SECTION_NAME ".gnu.build.attributes"
|
||||
|
||||
/* Values used in GNU .note.gnu.property notes (NT_GNU_PROPERTY_TYPE_0). */
|
||||
#define GNU_PROPERTY_STACK_SIZE 1
|
||||
#define GNU_PROPERTY_NO_COPY_ON_PROTECTED 2
|
||||
#define GNU_PROPERTY_X86_ISA_1_USED 0xc0000000
|
||||
#define GNU_PROPERTY_X86_ISA_1_NEEDED 0xc0000001
|
||||
|
||||
#define GNU_PROPERTY_X86_ISA_1_486 (1U << 0)
|
||||
#define GNU_PROPERTY_X86_ISA_1_586 (1U << 1)
|
||||
#define GNU_PROPERTY_X86_ISA_1_686 (1U << 2)
|
||||
#define GNU_PROPERTY_X86_ISA_1_SSE (1U << 3)
|
||||
#define GNU_PROPERTY_X86_ISA_1_SSE2 (1U << 4)
|
||||
#define GNU_PROPERTY_X86_ISA_1_SSE3 (1U << 5)
|
||||
#define GNU_PROPERTY_X86_ISA_1_SSSE3 (1U << 6)
|
||||
#define GNU_PROPERTY_X86_ISA_1_SSE4_1 (1U << 7)
|
||||
#define GNU_PROPERTY_X86_ISA_1_SSE4_2 (1U << 8)
|
||||
#define GNU_PROPERTY_X86_ISA_1_AVX (1U << 9)
|
||||
#define GNU_PROPERTY_X86_ISA_1_AVX2 (1U << 10)
|
||||
#define GNU_PROPERTY_X86_ISA_1_AVX512F (1U << 11)
|
||||
#define GNU_PROPERTY_X86_ISA_1_AVX512CD (1U << 12)
|
||||
#define GNU_PROPERTY_X86_ISA_1_AVX512ER (1U << 13)
|
||||
#define GNU_PROPERTY_X86_ISA_1_AVX512PF (1U << 14)
|
||||
#define GNU_PROPERTY_X86_ISA_1_AVX512VL (1U << 15)
|
||||
#define GNU_PROPERTY_X86_ISA_1_AVX512DQ (1U << 16)
|
||||
#define GNU_PROPERTY_X86_ISA_1_AVX512BW (1U << 17)
|
||||
|
||||
/* Values used in GNU .note.ABI-tag notes (NT_GNU_ABI_TAG). */
|
||||
#define GNU_ABI_TAG_LINUX 0
|
||||
|
||||
Reference in New Issue
Block a user