diff --git a/elf/elf.h b/elf/elf.h index fff893d..be4d111 100644 --- a/elf/elf.h +++ b/elf/elf.h @@ -1247,6 +1247,71 @@ typedef struct /* Version note generated by GNU gold containing a version string. */ #define NT_GNU_GOLD_VERSION 4 +/* Property notes generated by GCC for use with the dynamic linker. */ +#define NT_GNU_PROPERTY_TYPE_0 5 + +/* Default name of section containing NT_GNU_PROPERTY_TYPE_0 notes. */ +#define NOTE_GNU_PROPERTY_SECTION_NAME ".note.gnu.property" + +/* Values used in NT_GNU_PROPERTY_TYPE_0 notes. */ +#define GNU_PROPERTY_STACK_SIZE 1 +#define GNU_PROPERTY_NO_COPY_ON_PROTECTED 2 +/* Processor-specific semantics, low. */ +#define GNU_PROPERTY_LOPROC 0xc0000000 +/* Processor-specific semantics, high. */ +#define GNU_PROPERTY_HIPROC 0xdfffffff +/* Application-specific semantics, low. */ +#define GNU_PROPERTY_LOUSER 0xe0000000 +/* Application-specific semantics, high. */ +#define GNU_PROPERTY_HIUSER 0xffffffff + +/* X86 specific note values for NT_GNU_PROPERTY_TYPE_0 notes. */ +#define GNU_PROPERTY_X86_ISA_1_USED 0xc0000000 +#define GNU_PROPERTY_X86_ISA_1_NEEDED 0xc0000001 + +/* Values for GNU_PROPERTY_X86_ISA notes. */ +#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) + + +/* Attribute notes generated by GCC for use with static analysis tools. */ +#define NT_GNU_BUILD_ATTRIBUTE_OPEN 0x100 +#define NT_GNU_BUILD_ATTRIBUTE_FUNC 0x101 + +/* Default name of section containing NT_GNU_BUILD_ATTRIBUTE notes. */ +#define GNU_BUILD_ATTRS_SECTION_NAME ".gnu.build.attributes" + +/* Special characters at the start of GNU build attribute names. */ +#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 '!' + +/* Special characters inside GNU build attribute names. */ +#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 GNU_BUILD_ATTRIBUTE_SHORT_ENUM 8 /* Move records. */ typedef struct