Added more enums to ENUM_SH_TYPE
[pyelftools.git] / elftools / elf / enums.py
1 #-------------------------------------------------------------------------------
2 # elftools: elf/enums.py
3 #
4 # Mappings of enum names to values
5 #
6 # Eli Bendersky (eliben@gmail.com)
7 # This code is in the public domain
8 #-------------------------------------------------------------------------------
9 from ..construct import Pass
10
11
12 # e_ident[EI_CLASS] in the ELF header
13 ENUM_EI_CLASS = dict(
14 ELFCLASSNONE=0,
15 ELFCLASS32=1,
16 ELFCLASS64=2
17 )
18
19 # e_ident[EI_DATA] in the ELF header
20 ENUM_EI_DATA = dict(
21 ELFDATANONE=0,
22 ELFDATA2LSB=1,
23 ELFDATA2MSB=2
24 )
25
26 # e_version in the ELF header
27 ENUM_E_VERSION = dict(
28 EV_NONE=0,
29 EV_CURRENT=1,
30 _default_=Pass,
31 )
32
33 # e_ident[EI_OSABI] in the ELF header
34 ENUM_EI_OSABI = dict(
35 ELFOSABI_SYSV=0,
36 ELFOSABI_HPUX=1,
37 ELFOSABI_NETBSD=2,
38 ELFOSABI_LINUX=3,
39 ELFOSABI_HURD=4,
40 ELFOSABI_SOLARIS=6,
41 ELFOSABI_AIX=7,
42 ELFOSABI_IRIX=8,
43 ELFOSABI_FREEBSD=9,
44 ELFOSABI_TRU64=10,
45 ELFOSABI_MODESTO=11,
46 ELFOSABI_OPENBSD=12,
47 ELFOSABI_OPENVMS=13,
48 ELFOSABI_NSK=14,
49 ELFOSABI_AROS=15,
50 ELFOSABI_ARM=97,
51 ELFOSABI_STANDALONE=255,
52 _default_=Pass,
53 )
54
55 # e_type in the ELF header
56 ENUM_E_TYPE = dict(
57 ET_NONE=0,
58 ET_REL=1,
59 ET_EXEC=2,
60 ET_DYN=3,
61 ET_CORE=4,
62 ET_LOPROC=0xff00,
63 ET_HIPROC=0xffff,
64 _default_=Pass,
65 )
66
67 # e_machine in the ELF header
68 ENUM_E_MACHINE = dict(
69 EM_NONE=0,
70 EM_M32=1,
71 EM_SPARC=2,
72 EM_386=3,
73 EM_68K=4,
74 EM_88K=5,
75 EM_860=7,
76 EM_MIPS=8,
77 EM_S370=9,
78 EM_MIPS_RS3_LE=10,
79 EM_PARISC=15,
80 EM_VPP500=17,
81 EM_SPARC32PLUS=18,
82 EM_960=19,
83 EM_PPC=20,
84 EM_PPC64=21,
85 EM_S390=22,
86 EM_V800=36,
87 EM_FR20=37,
88 EM_RH32=38,
89 EM_RCE=39,
90 EM_ARM=40,
91 EM_ALPHA=41,
92 EM_SH=42,
93 EM_SPARCV9=43,
94 EM_TRICORE=44,
95 EM_ARC=45,
96 EM_H8_300=46,
97 EM_H8_300H=47,
98 EM_H8S=48,
99 EM_H8_500=49,
100 EM_IA_64=50,
101 EM_MIPS_X=51,
102 EM_COLDFIRE=52,
103 EM_68HC12=53,
104 EM_MMA=54,
105 EM_PCP=55,
106 EM_NCPU=56,
107 EM_NDR1=57,
108 EM_STARCORE=58,
109 EM_ME16=59,
110 EM_ST100=60,
111 EM_TINYJ=61,
112 EM_X86_64=62,
113 EM_PDSP=63,
114 EM_PDP10=64,
115 EM_PDP11=65,
116 EM_FX66=66,
117 EM_ST9PLUS=67,
118 EM_ST7=68,
119 EM_68HC16=69,
120 EM_68HC11=70,
121 EM_68HC08=71,
122 EM_68HC05=72,
123 EM_SVX=73,
124 EM_ST19=74,
125 EM_VAX=75,
126 EM_CRIS=76,
127 EM_JAVELIN=77,
128 EM_FIREPATH=78,
129 EM_ZSP=79,
130 EM_MMIX=80,
131 EM_HUANY=81,
132 EM_PRISM=82,
133 EM_AVR=83,
134 EM_FR30=84,
135 EM_D10V=85,
136 EM_D30V=86,
137 EM_V850=87,
138 EM_M32R=88,
139 EM_MN10300=89,
140 EM_MN10200=90,
141 EM_PJ=91,
142 EM_OPENRISC=92,
143 EM_ARC_A5=93,
144 EM_XTENSA=94,
145 EM_VIDEOCORE=95,
146 EM_TMM_GPP=96,
147 EM_NS32K=97,
148 EM_TPC=98,
149 EM_SNP1K=99,
150 EM_ST200=100,
151 EM_IP2K=101,
152 EM_MAX=102,
153 EM_CR=103,
154 EM_F2MC16=104,
155 EM_MSP430=105,
156 EM_BLACKFIN=106,
157 EM_SE_C33=107,
158 EM_SEP=108,
159 EM_ARCA=109,
160 EM_UNICORE=110,
161 EM_L10M=180,
162 _default_=Pass,
163 )
164
165 # sh_type in the section header
166 ENUM_SH_TYPE = dict(
167 SHT_NULL=0,
168 SHT_PROGBITS=1,
169 SHT_SYMTAB=2,
170 SHT_STRTAB=3,
171 SHT_RELA=4,
172 SHT_HASH=5,
173 SHT_DYNAMIC=6,
174 SHT_NOTE=7,
175 SHT_NOBITS=8,
176 SHT_REL=9,
177 SHT_SHLIB=10,
178 SHT_DYNSYM=11,
179 SHT_INIT_ARRAY=14,
180 SHT_FINI_ARRAY=15,
181 SHT_PREINIT_ARRAY=16,
182 SHT_GROUP=17,
183 SHT_SYMTAB_SHNDX=18,
184 SHT_NUM=19,
185 SHT_LOOS=0x60000000,
186 SHT_GNU_HASH=0x6ffffff6,
187 SHT_GNU_verdef=0x6ffffffd,
188 SHT_GNU_verneed=0x6ffffffe,
189 SHT_GNU_versym=0x6fffffff,
190 SHT_LOPROC=0x70000000,
191 SHT_HIPROC=0x7fffffff,
192 SHT_LOUSER=0x80000000,
193 SHT_HIUSER=0xffffffff,
194 SHT_AMD64_UNWIND=0x70000001,
195 _default_=Pass,
196 )
197
198 # p_type in the program header
199 # some values scavenged from the ELF headers in binutils-2.21
200 ENUM_P_TYPE = dict(
201 PT_NULL=0,
202 PT_LOAD=1,
203 PT_DYNAMIC=2,
204 PT_INTERP=3,
205 PT_NOTE=4,
206 PT_SHLIB=5,
207 PT_PHDR=6,
208 PT_TLS=7,
209 PT_LOPROC=0x70000000,
210 PT_HIPROC=0x7fffffff,
211 PT_GNU_EH_FRAME=0x6474e550,
212 PT_GNU_STACK=0x6474e551,
213 PT_GNU_RELRO=0x6474e552,
214 _default_=Pass,
215 )
216
217 # st_info bindings in the symbol header
218 ENUM_ST_INFO_BIND = dict(
219 STB_LOCAL=0,
220 STB_GLOBAL=1,
221 STB_WEAK=2,
222 STB_NUM=3,
223 STB_LOOS=10,
224 STB_HIOS=12,
225 STB_LOPROC=13,
226 STB_HIPROC=15,
227 _default_=Pass,
228 )
229
230 # st_info type in the symbol header
231 ENUM_ST_INFO_TYPE = dict(
232 STT_NOTYPE=0,
233 STT_OBJECT=1,
234 STT_FUNC=2,
235 STT_SECTION=3,
236 STT_FILE=4,
237 STT_COMMON=5,
238 STT_TLS=6,
239 STT_NUM=7,
240 STT_RELC=8,
241 STT_SRELC=9,
242 STT_LOOS=10,
243 STT_HIOS=12,
244 STT_LOPROC=13,
245 STT_HIPROC=15,
246 _default_=Pass,
247 )
248
249 # visibility from st_other
250 ENUM_ST_VISIBILITY = dict(
251 STV_DEFAULT=0,
252 STV_INTERNAL=1,
253 STV_HIDDEN=2,
254 STV_PROTECTED=3,
255 _default_=Pass,
256 )
257
258 # st_shndx
259 ENUM_ST_SHNDX = dict(
260 SHN_UNDEF=0,
261 SHN_ABS=0xfff1,
262 SHN_COMMON=0xfff2,
263 _default_=Pass,
264 )
265
266 # d_tag
267 ENUM_D_TAG = dict(
268 DT_NULL=0,
269 DT_NEEDED=1,
270 DT_PLTRELSZ=2,
271 DT_PLTGOT=3,
272 DT_HASH=4,
273 DT_STRTAB=5,
274 DT_SYMTAB=6,
275 DT_RELA=7,
276 DT_RELASZ=8,
277 DT_RELAENT=9,
278 DT_STRSZ=10,
279 DT_SYMENT=11,
280 DT_INIT=12,
281 DT_FINI=13,
282 DT_SONAME=14,
283 DT_RPATH=15,
284 DT_SYMBOLIC=16,
285 DT_REL=17,
286 DT_RELSZ=18,
287 DT_RELENT=19,
288 DT_PLTREL=20,
289 DT_DEBUG=21,
290 DT_TEXTREL=22,
291 DT_JMPREL=23,
292 DT_BIND_NOW=24,
293 DT_INIT_ARRAY=25,
294 DT_FINI_ARRAY=26,
295 DT_INIT_ARRAYSZ=27,
296 DT_FINI_ARRAYSZ=28,
297 DT_RUNPATH=29,
298 DT_FLAGS=30,
299 DT_ENCODING=32,
300 DT_PREINIT_ARRAY=32,
301 DT_PREINIT_ARRAYSZ=33,
302 DT_NUM=34,
303 DT_LOOS=0x6000000d,
304 DT_HIOS=0x6ffff000,
305 DT_LOPROC=0x70000000,
306 DT_HIPROC=0x7fffffff,
307 DT_PROCNUM=0x35,
308 DT_VALRNGLO=0x6ffffd00,
309 DT_GNU_PRELINKED=0x6ffffdf5,
310 DT_GNU_CONFLICTSZ=0x6ffffdf6,
311 DT_GNU_LIBLISTSZ=0x6ffffdf7,
312 DT_CHECKSUM=0x6ffffdf8,
313 DT_PLTPADSZ=0x6ffffdf9,
314 DT_MOVEENT=0x6ffffdfa,
315 DT_MOVESZ=0x6ffffdfb,
316 DT_SYMINSZ=0x6ffffdfe,
317 DT_SYMINENT=0x6ffffdff,
318 DT_GNU_HASH=0x6ffffef5,
319 DT_TLSDESC_PLT=0x6ffffef6,
320 DT_TLSDESC_GOT=0x6ffffef7,
321 DT_GNU_CONFLICT=0x6ffffef8,
322 DT_GNU_LIBLIST=0x6ffffef9,
323 DT_CONFIG=0x6ffffefa,
324 DT_DEPAUDIT=0x6ffffefb,
325 DT_AUDIT=0x6ffffefc,
326 DT_PLTPAD=0x6ffffefd,
327 DT_MOVETAB=0x6ffffefe,
328 DT_SYMINFO=0x6ffffeff,
329 DT_VERSYM=0x6ffffff0,
330 DT_RELACOUNT=0x6ffffff9,
331 DT_RELCOUNT=0x6ffffffa,
332 DT_FLAGS_1=0x6ffffffb,
333 DT_VERDEF=0x6ffffffc,
334 DT_VERDEFNUM=0x6ffffffd,
335 DT_VERNEED=0x6ffffffe,
336 DT_VERNEEDNUM=0x6fffffff,
337 DT_AUXILIARY=0x7ffffffd,
338 DT_FILTER=0x7fffffff,
339 _default_=Pass,
340 )
341
342 ENUM_RELOC_TYPE_i386 = dict(
343 R_386_NONE=0,
344 R_386_32=1,
345 R_386_PC32=2,
346 R_386_GOT32=3,
347 R_386_PLT32=4,
348 R_386_COPY=5,
349 R_386_GLOB_DAT=6,
350 R_386_JUMP_SLOT=7,
351 R_386_RELATIVE=8,
352 R_386_GOTOFF=9,
353 R_386_GOTPC=10,
354 R_386_32PLT=11,
355 R_386_TLS_TPOFF=14,
356 R_386_TLS_IE=15,
357 R_386_TLS_GOTIE=16,
358 R_386_TLS_LE=17,
359 R_386_TLS_GD=18,
360 R_386_TLS_LDM=19,
361 R_386_16=20,
362 R_386_PC16=21,
363 R_386_8=22,
364 R_386_PC8=23,
365 R_386_TLS_GD_32=24,
366 R_386_TLS_GD_PUSH=25,
367 R_386_TLS_GD_CALL=26,
368 R_386_TLS_GD_POP=27,
369 R_386_TLS_LDM_32=28,
370 R_386_TLS_LDM_PUSH=29,
371 R_386_TLS_LDM_CALL=30,
372 R_386_TLS_LDM_POP=31,
373 R_386_TLS_LDO_32=32,
374 R_386_TLS_IE_32=33,
375 R_386_TLS_LE_32=34,
376 R_386_TLS_DTPMOD32=35,
377 R_386_TLS_DTPOFF32=36,
378 R_386_TLS_TPOFF32=37,
379 R_386_TLS_GOTDESC=39,
380 R_386_TLS_DESC_CALL=40,
381 R_386_TLS_DESC=41,
382 R_386_IRELATIVE=42,
383 R_386_USED_BY_INTEL_200=200,
384 R_386_GNU_VTINHERIT=250,
385 R_386_GNU_VTENTRY=251,
386 _default_=Pass,
387 )
388
389 ENUM_RELOC_TYPE_x64 = dict(
390 R_X86_64_NONE=0,
391 R_X86_64_64=1,
392 R_X86_64_PC32=2,
393 R_X86_64_GOT32=3,
394 R_X86_64_PLT32=4,
395 R_X86_64_COPY=5,
396 R_X86_64_GLOB_DAT=6,
397 R_X86_64_JUMP_SLOT=7,
398 R_X86_64_RELATIVE=8,
399 R_X86_64_GOTPCREL=9,
400 R_X86_64_32=10,
401 R_X86_64_32S=11,
402 R_X86_64_16=12,
403 R_X86_64_PC16=13,
404 R_X86_64_8=14,
405 R_X86_64_PC8=15,
406 R_X86_64_DTPMOD64=16,
407 R_X86_64_DTPOFF64=17,
408 R_X86_64_TPOFF64=18,
409 R_X86_64_TLSGD=19,
410 R_X86_64_TLSLD=20,
411 R_X86_64_DTPOFF32=21,
412 R_X86_64_GOTTPOFF=22,
413 R_X86_64_TPOFF32=23,
414 R_X86_64_PC64=24,
415 R_X86_64_GOTOFF64=25,
416 R_X86_64_GOTPC32=26,
417 R_X86_64_GOT64=27,
418 R_X86_64_GOTPCREL64=28,
419 R_X86_64_GOTPC64=29,
420 R_X86_64_GOTPLT64=30,
421 R_X86_64_PLTOFF64=31,
422 R_X86_64_GOTPC32_TLSDESC=34,
423 R_X86_64_TLSDESC_CALL=35,
424 R_X86_64_TLSDESC=36,
425 R_X86_64_IRELATIVE=37,
426 R_X86_64_GNU_VTINHERIT=250,
427 R_X86_64_GNU_VTENTRY=251,
428 _default_=Pass,
429 )
430