File indexing completed on 2025-09-16 08:55:00
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030 #ifndef _ELF_KNOWLEDGE_H
0031 #define _ELF_KNOWLEDGE_H 1
0032
0033 #include <stdbool.h>
0034
0035
0036
0037 #define SECTION_STRIP_P(shdr, name, remove_comment) \
0038 \
0039 (((shdr)->sh_flags & SHF_ALLOC) == 0 \
0040 \
0041 && (shdr)->sh_type != SHT_NOTE \
0042 && (((shdr)->sh_type) != SHT_PROGBITS \
0043 \
0044 || (name != NULL \
0045 && strncmp (name, ".gnu.warning.", sizeof ".gnu.warning." - 1) != 0\
0046 \
0047 && (remove_comment \
0048 || strcmp (name, ".comment") != 0))))
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060 #define SH_INFO_LINK_P(Shdr) \
0061 ((Shdr)->sh_type == SHT_REL || (Shdr)->sh_type == SHT_RELA \
0062 || ((Shdr)->sh_flags & SHF_INFO_LINK) != 0)
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075 #define SH_ENTSIZE_HASH(Ehdr) \
0076 ((Ehdr)->e_machine == EM_ALPHA \
0077 || ((Ehdr)->e_machine == EM_S390 \
0078 && (Ehdr)->e_ident[EI_CLASS] == ELFCLASS64) ? 8 : 4)
0079
0080
0081
0082 #define ELF_NOTE_GNU_BUILD_ATTRIBUTE_PREFIX "GA"
0083
0084 #define NT_GNU_BUILD_ATTRIBUTE_OPEN 0x100
0085 #define NT_GNU_BUILD_ATTRIBUTE_FUNC 0x101
0086
0087 #define GNU_BUILD_ATTRIBUTE_TYPE_NUMERIC '*'
0088 #define GNU_BUILD_ATTRIBUTE_TYPE_STRING '$'
0089 #define GNU_BUILD_ATTRIBUTE_TYPE_BOOL_TRUE '+'
0090 #define GNU_BUILD_ATTRIBUTE_TYPE_BOOL_FALSE '!'
0091
0092 #define GNU_BUILD_ATTRIBUTE_VERSION 1
0093 #define GNU_BUILD_ATTRIBUTE_STACK_PROT 2
0094 #define GNU_BUILD_ATTRIBUTE_RELRO 3
0095 #define GNU_BUILD_ATTRIBUTE_STACK_SIZE 4
0096 #define GNU_BUILD_ATTRIBUTE_TOOL 5
0097 #define GNU_BUILD_ATTRIBUTE_ABI 6
0098 #define GNU_BUILD_ATTRIBUTE_PIC 7
0099 #define GNU_BUILD_ATTRIBUTE_SHORT_ENUM 8
0100
0101
0102
0103
0104 #define EF_HEXAGON_MACH_V2 0x00000001
0105 #define EF_HEXAGON_MACH_V3 0x00000002
0106 #define EF_HEXAGON_MACH_V4 0x00000003
0107 #define EF_HEXAGON_MACH_V5 0x00000004
0108 #define EF_HEXAGON_MACH_V55 0x00000005
0109 #define EF_HEXAGON_MACH_V60 0x00000060
0110 #define EF_HEXAGON_MACH_V61 0x00000061
0111 #define EF_HEXAGON_MACH_V62 0x00000062
0112 #define EF_HEXAGON_MACH_V65 0x00000065
0113 #define EF_HEXAGON_MACH_V66 0x00000066
0114 #define EF_HEXAGON_MACH_V67 0x00000067
0115 #define EF_HEXAGON_MACH_V67T 0x00008067
0116 #define EF_HEXAGON_MACH_V68 0x00000068
0117 #define EF_HEXAGON_MACH_V69 0x00000069
0118 #define EF_HEXAGON_MACH_V71 0x00000071
0119 #define EF_HEXAGON_MACH_V71T 0x00008071
0120 #define EF_HEXAGON_MACH_V73 0x00000073
0121 #define EF_HEXAGON_MACH 0x000003ff
0122 #define EF_HEXAGON_TINY 0x00008000
0123
0124
0125 #define SHN_HEXAGON_SCOMMON 0xff00
0126 #define SHN_HEXAGON_SCOMMON_1 0xff01
0127 #define SHN_HEXAGON_SCOMMON_2 0xff02
0128 #define SHN_HEXAGON_SCOMMON_4 0xff03
0129 #define SHN_HEXAGON_SCOMMON_8 0xff04
0130
0131
0132 #define R_HEX_NONE 0
0133 #define R_HEX_B22_PCREL 1
0134 #define R_HEX_B15_PCREL 2
0135 #define R_HEX_B7_PCREL 3
0136 #define R_HEX_LO16 4
0137 #define R_HEX_HI16 5
0138 #define R_HEX_32 6
0139 #define R_HEX_16 7
0140 #define R_HEX_8 8
0141 #define R_HEX_GPREL16_0 9
0142 #define R_HEX_GPREL16_1 10
0143 #define R_HEX_GPREL16_2 11
0144 #define R_HEX_GPREL16_3 12
0145 #define R_HEX_HL16 13
0146 #define R_HEX_B13_PCREL 14
0147 #define R_HEX_B9_PCREL 15
0148 #define R_HEX_B32_PCREL_X 16
0149 #define R_HEX_32_6_X 17
0150 #define R_HEX_B22_PCREL_X 18
0151 #define R_HEX_B15_PCREL_X 19
0152 #define R_HEX_B13_PCREL_X 20
0153 #define R_HEX_B9_PCREL_X 21
0154 #define R_HEX_B7_PCREL_X 22
0155 #define R_HEX_16_X 23
0156 #define R_HEX_12_X 24
0157 #define R_HEX_11_X 25
0158 #define R_HEX_10_X 26
0159 #define R_HEX_9_X 27
0160 #define R_HEX_8_X 28
0161 #define R_HEX_7_X 29
0162 #define R_HEX_6_X 30
0163 #define R_HEX_32_PCREL 31
0164 #define R_HEX_COPY 32
0165 #define R_HEX_GLOB_DAT 33
0166 #define R_HEX_JMP_SLOT 34
0167 #define R_HEX_RELATIVE 35
0168 #define R_HEX_PLT_B22_PCREL 36
0169 #define R_HEX_GOTREL_LO16 37
0170 #define R_HEX_GOTREL_HI16 38
0171 #define R_HEX_GOTREL_32 39
0172 #define R_HEX_GOT_LO16 40
0173 #define R_HEX_GOT_HI16 41
0174 #define R_HEX_GOT_32 42
0175 #define R_HEX_GOT_16 43
0176 #define R_HEX_DTPMOD_32 44
0177 #define R_HEX_DTPREL_LO16 45
0178 #define R_HEX_DTPREL_HI16 46
0179 #define R_HEX_DTPREL_32 47
0180 #define R_HEX_DTPREL_16 48
0181 #define R_HEX_GD_PLT_B22_PCREL 49
0182 #define R_HEX_GD_GOT_LO16 50
0183 #define R_HEX_GD_GOT_HI16 51
0184 #define R_HEX_GD_GOT_32 52
0185 #define R_HEX_GD_GOT_16 53
0186 #define R_HEX_IE_LO16 54
0187 #define R_HEX_IE_HI16 55
0188 #define R_HEX_IE_32 56
0189 #define R_HEX_IE_GOT_LO16 57
0190 #define R_HEX_IE_GOT_HI16 58
0191 #define R_HEX_IE_GOT_32 59
0192 #define R_HEX_IE_GOT_16 60
0193 #define R_HEX_TPREL_LO16 61
0194 #define R_HEX_TPREL_HI16 62
0195 #define R_HEX_TPREL_32 63
0196 #define R_HEX_TPREL_16 64
0197 #define R_HEX_6_PCREL_X 65
0198 #define R_HEX_GOTREL_32_6_X 66
0199 #define R_HEX_GOTREL_16_X 67
0200 #define R_HEX_GOTREL_11_X 68
0201 #define R_HEX_GOT_32_6_X 69
0202 #define R_HEX_GOT_16_X 70
0203 #define R_HEX_GOT_11_X 71
0204 #define R_HEX_DTPREL_32_6_X 72
0205 #define R_HEX_DTPREL_16_X 73
0206 #define R_HEX_DTPREL_11_X 74
0207 #define R_HEX_GD_GOT_32_6_X 75
0208 #define R_HEX_GD_GOT_16_X 76
0209 #define R_HEX_GD_GOT_11_X 77
0210 #define R_HEX_IE_32_6_X 78
0211 #define R_HEX_IE_16_X 79
0212 #define R_HEX_IE_GOT_32_6_X 80
0213 #define R_HEX_IE_GOT_16_X 81
0214 #define R_HEX_IE_GOT_11_X 82
0215 #define R_HEX_TPREL_32_6_X 83
0216 #define R_HEX_TPREL_16_X 84
0217 #define R_HEX_TPREL_11_X 85
0218 #define R_HEX_LD_PLT_B22_PCREL 86
0219 #define R_HEX_LD_GOT_LO16 87
0220 #define R_HEX_LD_GOT_HI16 88
0221 #define R_HEX_LD_GOT_32 89
0222 #define R_HEX_LD_GOT_16 90
0223 #define R_HEX_LD_GOT_32_6_X 91
0224 #define R_HEX_LD_GOT_16_X 92
0225 #define R_HEX_LD_GOT_11_X 93
0226 #define R_HEX_23_REG 94
0227 #define R_HEX_GD_PLT_B22_PCREL_X 95
0228 #define R_HEX_GD_PLT_B32_PCREL_X 96
0229 #define R_HEX_LD_PLT_B22_PCREL_X 97
0230 #define R_HEX_LD_PLT_B32_PCREL_X 98
0231 #define R_HEX_27_REG 99
0232
0233 #endif