1 #-------------------------------------------------------------------------------
2 # elftools: elf/enums.py
4 # Mappings of enum names to values
6 # Eli Bendersky (eliben@gmail.com)
7 # This code is in the public domain
8 #-------------------------------------------------------------------------------
9 from ..construct
import Pass
12 # e_ident[EI_CLASS] in the ELF header
19 # e_ident[EI_DATA] in the ELF header
26 # e_version in the ELF header
27 ENUM_E_VERSION
= dict(
33 # e_ident[EI_OSABI] in the ELF header
50 ELFOSABI_ARM_AEABI
=64,
52 ELFOSABI_STANDALONE
=255,
56 # e_type in the ELF header
68 # e_machine in the ELF header
69 ENUM_E_MACHINE
= dict(
167 # sh_type in the section header
183 SHT_PREINIT_ARRAY
=16,
188 SHT_GNU_HASH
=0x6ffffff6,
189 SHT_GNU_verdef
=0x6ffffffd, # also SHT_SUNW_verdef
190 SHT_GNU_verneed
=0x6ffffffe, # also SHT_SUNW_verneed
191 SHT_GNU_versym
=0x6fffffff, # also SHT_SUNW_versym
192 SHT_LOPROC
=0x70000000,
193 SHT_HIPROC
=0x7fffffff,
194 SHT_LOUSER
=0x80000000,
195 SHT_HIUSER
=0xffffffff,
196 SHT_AMD64_UNWIND
=0x70000001,
197 SHT_SUNW_LDYNSYM
=0x6ffffff3,
198 SHT_SUNW_syminfo
=0x6ffffffc,
199 SHT_ARM_EXIDX
=0x70000001,
200 SHT_ARM_PREEMPTMAP
=0x70000002,
201 SHT_ARM_ATTRIBUTES
=0x70000003,
202 SHT_ARM_DEBUGOVERLAY
=0x70000004,
206 # p_type in the program header
207 # some values scavenged from the ELF headers in binutils-2.21
217 PT_LOPROC
=0x70000000,
218 PT_HIPROC
=0x7fffffff,
219 PT_GNU_EH_FRAME
=0x6474e550,
220 PT_GNU_STACK
=0x6474e551,
221 PT_GNU_RELRO
=0x6474e552,
222 PT_ARM_ARCHEXT
=0x70000000,
223 PT_ARM_EXIDX
=0x70000001,
224 PT_ARM_UNWIND
=0x70000001,
225 PT_AARCH64_ARCHEXT
=0x70000000,
226 PT_AARCH64_UNWIND
=0x70000001,
230 # st_info bindings in the symbol header
231 ENUM_ST_INFO_BIND
= dict(
243 # st_info type in the symbol header
244 ENUM_ST_INFO_TYPE
= dict(
262 # visibility from st_other
263 ENUM_ST_VISIBILITY
= dict(
275 ENUM_ST_SHNDX
= dict(
317 DT_PREINIT_ARRAYSZ
=33,
320 DT_SUNW_AUXILIARY
=0x6000000d,
321 DT_SUNW_RTLDINF
=0x6000000e,
322 DT_SUNW_FILTER
=0x6000000f,
323 DT_SUNW_CAP
=0x60000010,
324 DT_SUNW_SYMTAB
=0x60000011,
325 DT_SUNW_SYMSZ
=0x60000012,
326 DT_SUNW_ENCODING
=0x60000013,
327 DT_SUNW_SORTENT
=0x60000013,
328 DT_SUNW_SYMSORT
=0x60000014,
329 DT_SUNW_SYMSORTSZ
=0x60000015,
330 DT_SUNW_TLSSORT
=0x60000016,
331 DT_SUNW_TLSSORTSZ
=0x60000017,
332 DT_SUNW_CAPINFO
=0x60000018,
333 DT_SUNW_STRPAD
=0x60000019,
334 DT_SUNW_CAPCHAIN
=0x6000001a,
335 DT_SUNW_LDMACH
=0x6000001b,
336 DT_SUNW_CAPCHAINENT
=0x6000001d,
337 DT_SUNW_CAPCHAINSZ
=0x6000001f,
339 DT_LOPROC
=0x70000000,
340 DT_HIPROC
=0x7fffffff,
342 DT_VALRNGLO
=0x6ffffd00,
343 DT_GNU_PRELINKED
=0x6ffffdf5,
344 DT_GNU_CONFLICTSZ
=0x6ffffdf6,
345 DT_GNU_LIBLISTSZ
=0x6ffffdf7,
346 DT_CHECKSUM
=0x6ffffdf8,
347 DT_PLTPADSZ
=0x6ffffdf9,
348 DT_MOVEENT
=0x6ffffdfa,
349 DT_MOVESZ
=0x6ffffdfb,
350 DT_SYMINSZ
=0x6ffffdfe,
351 DT_SYMINENT
=0x6ffffdff,
352 DT_GNU_HASH
=0x6ffffef5,
353 DT_TLSDESC_PLT
=0x6ffffef6,
354 DT_TLSDESC_GOT
=0x6ffffef7,
355 DT_GNU_CONFLICT
=0x6ffffef8,
356 DT_GNU_LIBLIST
=0x6ffffef9,
357 DT_CONFIG
=0x6ffffefa,
358 DT_DEPAUDIT
=0x6ffffefb,
360 DT_PLTPAD
=0x6ffffefd,
361 DT_MOVETAB
=0x6ffffefe,
362 DT_SYMINFO
=0x6ffffeff,
363 DT_VERSYM
=0x6ffffff0,
364 DT_RELACOUNT
=0x6ffffff9,
365 DT_RELCOUNT
=0x6ffffffa,
366 DT_FLAGS_1
=0x6ffffffb,
367 DT_VERDEF
=0x6ffffffc,
368 DT_VERDEFNUM
=0x6ffffffd,
369 DT_VERNEED
=0x6ffffffe,
370 DT_VERNEEDNUM
=0x6fffffff,
371 DT_AUXILIARY
=0x7ffffffd,
372 DT_FILTER
=0x7fffffff,
376 ENUM_RELOC_TYPE_i386
= dict(
400 R_386_TLS_GD_PUSH
=25,
401 R_386_TLS_GD_CALL
=26,
404 R_386_TLS_LDM_PUSH
=29,
405 R_386_TLS_LDM_CALL
=30,
406 R_386_TLS_LDM_POP
=31,
410 R_386_TLS_DTPMOD32
=35,
411 R_386_TLS_DTPOFF32
=36,
412 R_386_TLS_TPOFF32
=37,
413 R_386_TLS_GOTDESC
=39,
414 R_386_TLS_DESC_CALL
=40,
417 R_386_USED_BY_INTEL_200
=200,
418 R_386_GNU_VTINHERIT
=250,
419 R_386_GNU_VTENTRY
=251,
423 ENUM_RELOC_TYPE_x64
= dict(
431 R_X86_64_JUMP_SLOT
=7,
440 R_X86_64_DTPMOD64
=16,
441 R_X86_64_DTPOFF64
=17,
445 R_X86_64_DTPOFF32
=21,
446 R_X86_64_GOTTPOFF
=22,
449 R_X86_64_GOTOFF64
=25,
452 R_X86_64_GOTPCREL64
=28,
454 R_X86_64_GOTPLT64
=30,
455 R_X86_64_PLTOFF64
=31,
456 R_X86_64_GOTPC32_TLSDESC
=34,
457 R_X86_64_TLSDESC_CALL
=35,
459 R_X86_64_IRELATIVE
=37,
460 R_X86_64_GNU_VTINHERIT
=250,
461 R_X86_64_GNU_VTENTRY
=251,
465 # Sunw Syminfo Bound To special values
466 ENUM_SUNW_SYMINFO_BOUNDTO
= dict(
467 SYMINFO_BT_SELF
=0xffff,
468 SYMINFO_BT_PARENT
=0xfffe,
469 SYMINFO_BT_NONE
=0xfffd,
470 SYMINFO_BT_EXTERN
=0xfffc,
474 # Versym section, version dependency index
478 VER_NDX_LORESERVE
=0xff00,
479 VER_NDX_ELIMINATE
=0xff01,
482 # Sunw Syminfo Bound To special values
483 ENUM_SUNW_SYMINFO_BOUNDTO
= dict(
484 SYMINFO_BT_SELF
=0xffff,
485 SYMINFO_BT_PARENT
=0xfffe,
486 SYMINFO_BT_NONE
=0xfffd,
487 SYMINFO_BT_EXTERN
=0xfffc,
491 # PT_NOTE section types
492 ENUM_NOTE_N_TYPE
= dict(
496 NT_GNU_GOLD_VERSION
=4,
500 # Values in GNU .note.ABI-tag notes (n_type=='NT_GNU_ABI_TAG')
501 ENUM_NOTE_ABI_TAG_OS
= dict(
504 ELF_NOTE_OS_SOLARIS2
=2,
505 ELF_NOTE_OS_FREEBSD
=3,
506 ELF_NOTE_OS_NETBSD
=4,
507 ELF_NOTE_OS_SYLLABLE
=5,
511 ENUM_RELOC_TYPE_ARM
= dict(
529 R_ARM_TLS_DTPMOD32
=17,
530 R_ARM_TLS_DTPOFF32
=18,
531 R_ARM_TLS_TPOFF32
=19,
544 R_ARM_ALU_PCREL_7_0
=32,
545 R_ARM_ALU_PCREL_15_8
=33,
546 R_ARM_ALU_PCREL_23_15
=34,
547 R_ARM_LDR_SBREL_11_0_NC
=35,
548 R_ARM_ALU_SBREL_19_12_NC
=36,
549 R_ARM_ALU_SBREL_27_20_CK
=37,
555 R_ARM_MOVW_ABS_NC
=43,
557 R_ARM_MOVW_PREL_NC
=45,
559 R_ARM_THM_MOVW_ABS_NC
=47,
560 R_ARM_THM_MOVT_ABS
=48,
561 R_ARM_THM_MOVW_PREL_NC
=49,
562 R_ARM_THM_MOVT_PREL
=50,
565 R_ARM_THM_ALU_PREL_11_0
=53,
569 R_ARM_ALU_PC_G0_NC
=57,
571 R_ARM_ALU_PC_G1_NC
=59,
582 R_ARM_ALU_SB_G0_NC
=70,
584 R_ARM_ALU_SB_G1_NC
=72,
596 R_ARM_MOVW_BREL_NC
=84,
599 R_ARM_THM_MOVW_BREL_NC
=87,
600 R_ARM_THM_MOVT_BREL
=88,
601 R_ARM_THM_MOVW_BREL
=89,
608 R_ARM_GNU_VTENTRY
=100,
609 R_ARM_GNU_VTINHERIT
=101,
610 R_ARM_THM_JUMP11
=102,
619 R_ARM_TLS_IE12GP
=111,
630 R_ARM_PRIVATE_10
=122,
631 R_ARM_PRIVATE_11
=123,
632 R_ARM_PRIVATE_12
=124,
633 R_ARM_PRIVATE_13
=125,
634 R_ARM_PRIVATE_14
=126,
635 R_ARM_PRIVATE_15
=127,
637 R_ARM_THM_TLS_DESCSEQ16
=129,
638 R_ARM_THM_TLS_DESCSEQ32
=130,
639 R_ARM_THM_GOT_BREL12
=131,
643 ENUM_RELOC_TYPE_AARCH64
= dict(
648 R_AARCH64_PREL64
=260,
649 R_AARCH64_PREL32
=261,
650 R_AARCH64_PREL16
=262,
651 R_AARCH64_MOVW_UABS_G0
=263,
652 R_AARCH64_MOVW_UABS_G0_NC
=264,
653 R_AARCH64_MOVW_UABS_G1
=265,
654 R_AARCH64_MOVW_UABS_G1_NC
=266,
655 R_AARCH64_MOVW_UABS_G2
=267,
656 R_AARCH64_MOVW_UABS_G2_NC
=268,
657 R_AARCH64_MOVW_UABS_G3
=269,
658 R_AARCH64_MOVW_SABS_G0
=270,
659 R_AARCH64_MOVW_SABS_G1
=271,
660 R_AARCH64_MOVW_SABS_G2
=272,
661 R_AARCH64_LD_PREL_LO19
=273,
662 R_AARCH64_ADR_PREL_LO21
=274,
663 R_AARCH64_ADR_PREL_PG_HI21
=275,
664 R_AARCH64_ADR_PREL_PG_HI21_NC
=276,
665 R_AARCH64_ADD_ABS_LO12_NC
=277,
666 R_AARCH64_LDST8_ABS_LO12_NC
=278,
667 R_AARCH64_TSTBR14
=279,
668 R_AARCH64_CONDBR19
=280,
669 R_AARCH64_JUMP26
=282,
670 R_AARCH64_CALL26
=283,
671 R_AARCH64_LDST16_ABS_LO12_NC
=284,
672 R_AARCH64_LDST32_ABS_LO12_NC
=285,
673 R_AARCH64_LDST64_ABS_LO12_NC
=286,
674 R_AARCH64_MOVW_PREL_G0
=287,
675 R_AARCH64_MOVW_PREL_G0_NC
=288,
676 R_AARCH64_MOVW_PREL_G1
=289,
677 R_AARCH64_MOVW_PREL_G1_NC
=290,
678 R_AARCH64_MOVW_PREL_G2
=291,
679 R_AARCH64_MOVW_PREL_G2_NC
=292,
680 R_AARCH64_MOVW_PREL_G3
=293,
681 R_AARCH64_MOVW_GOTOFF_G0
=300,
682 R_AARCH64_MOVW_GOTOFF_G0_NC
=301,
683 R_AARCH64_MOVW_GOTOFF_G1
=302,
684 R_AARCH64_MOVW_GOTOFF_G1_NC
=303,
685 R_AARCH64_MOVW_GOTOFF_G2
=304,
686 R_AARCH64_MOVW_GOTOFF_G2_NC
=305,
687 R_AARCH64_MOVW_GOTOFF_G3
=306,
688 R_AARCH64_GOTREL64
=307,
689 R_AARCH64_GOTREL32
=308,
690 R_AARCH64_GOT_LD_PREL19
=309,
691 R_AARCH64_LD64_GOTOFF_LO15
=310,
692 R_AARCH64_ADR_GOT_PAGE
=311,
693 R_AARCH64_LD64_GOT_LO12_NC
=312,
694 R_AARCH64_TLSGD_ADR_PREL21
=512,
695 R_AARCH64_TLSGD_ADR_PAGE21
=513,
696 R_AARCH64_TLSGD_ADD_LO12_NC
=514,
697 R_AARCH64_TLSGD_MOVW_G1
=515,
698 R_AARCH64_TLSGD_MOVW_G0_NC
=516,
699 R_AARCH64_TLSLD_ADR_PREL21
=517,
700 R_AARCH64_TLSLD_ADR_PAGE21
=518,
701 R_AARCH64_TLSLD_ADD_LO12_NC
=519,
702 R_AARCH64_TLSLD_MOVW_G1
=520,
703 R_AARCH64_TLSLD_MOVW_G0_NC
=521,
704 R_AARCH64_TLSLD_LD_PREL19
=522,
705 R_AARCH64_TLSLD_MOVW_DTPREL_G2
=523,
706 R_AARCH64_TLSLD_MOVW_DTPREL_G1
=524,
707 R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC
=525,
708 R_AARCH64_TLSLD_MOVW_DTPREL_G0
=526,
709 R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC
=527,
710 R_AARCH64_TLSLD_ADD_DTPREL_HI12
=528,
711 R_AARCH64_TLSLD_ADD_DTPREL_LO12
=529,
712 R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC
=530,
713 R_AARCH64_TLSLD_LDST8_DTPREL_LO12
=531,
714 R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC
=532,
715 R_AARCH64_TLSLD_LDST16_DTPREL_LO12
=533,
716 R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC
=534,
717 R_AARCH64_TLSLD_LDST32_DTPREL_LO12
=535,
718 R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC
=536,
719 R_AARCH64_TLSLD_LDST64_DTPREL_LO12
=537,
720 R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC
=538,
721 R_AARCH64_TLSIE_MOVW_GOTTPREL_G1
=539,
722 R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC
=540,
723 R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21
=541,
724 R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC
=542,
725 R_AARCH64_TLSIE_LD_GOTTPREL_PREL19
=543,
726 R_AARCH64_TLSLE_MOVW_TPREL_G2
=544,
727 R_AARCH64_TLSLE_MOVW_TPREL_G1
=545,
728 R_AARCH64_TLSLE_MOVW_TPREL_G1_NC
=546,
729 R_AARCH64_TLSLE_MOVW_TPREL_G0
=547,
730 R_AARCH64_TLSLE_MOVW_TPREL_G0_NC
=548,
731 R_AARCH64_TLSLE_ADD_TPREL_HI12
=549,
732 R_AARCH64_TLSLE_ADD_TPREL_LO12
=550,
733 R_AARCH64_TLSLE_ADD_TPREL_LO12_NC
=551,
734 R_AARCH64_TLSLE_LDST8_TPREL_LO12
=552,
735 R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC
=553,
736 R_AARCH64_TLSLE_LDST16_TPREL_LO12
=554,
737 R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC
=555,
738 R_AARCH64_TLSLE_LDST32_TPREL_LO12
=556,
739 R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC
=557,
740 R_AARCH64_TLSLE_LDST64_TPREL_LO12
=558,
741 R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC
=559,
743 R_AARCH64_GLOB_DAT
=1025,
744 R_AARCH64_JUMP_SLOT
=1026,
745 R_AARCH64_RELATIVE
=1027,
746 R_AARCH64_TLS_DTPREL64
=1028,
747 R_AARCH64_TLS_DTPMOD64
=1029,
748 R_AARCH64_TLS_TPREL64
=1030,
749 R_AARCH64_TLS_DTPREL32
=1031,
750 R_AARCH64_TLS_DTPMOD32
=1032,
751 R_AARCH64_TLS_TPREL32
=1033,