diff options
author | Nick Clifton <nickc@redhat.com> | 2017-03-01 11:09:46 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2017-03-01 11:09:46 +0000 |
commit | 9ef920e933bf2ea228c909cf81636e6d9577e51e (patch) | |
tree | c6118c4b931f1d68528ca12ec38e31af6e3b1d46 /include | |
parent | a7e8b06b8901309632fad842ffd7d90a81447c80 (diff) | |
download | gdb-9ef920e933bf2ea228c909cf81636e6d9577e51e.zip gdb-9ef920e933bf2ea228c909cf81636e6d9577e51e.tar.gz gdb-9ef920e933bf2ea228c909cf81636e6d9577e51e.tar.bz2 |
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.
Diffstat (limited to 'include')
-rw-r--r-- | include/ChangeLog | 42 | ||||
-rw-r--r-- | include/elf/common.h | 46 |
2 files changed, 88 insertions, 0 deletions
diff --git a/include/ChangeLog b/include/ChangeLog index 17e1752..904c20a 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,45 @@ +2017-03-01 Nick Clifton <nickc@redhat.com> + + * 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. + 2017-02-28 Peter Bergner <bergner@vnet.ibm.com> * dis-asm.h (disasm_options_t): New typedef. diff --git a/include/elf/common.h b/include/elf/common.h index 834c859..2b9bca6 100644 --- a/include/elf/common.h +++ b/include/elf/common.h @@ -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 |