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_LIBLIST
=0x6ffffff7,
190 SHT_GNU_verdef
=0x6ffffffd, # also SHT_SUNW_verdef
191 SHT_GNU_verneed
=0x6ffffffe, # also SHT_SUNW_verneed
192 SHT_GNU_versym
=0x6fffffff, # also SHT_SUNW_versym, SHT_HIOS
193 SHT_LOPROC
=0x70000000,
194 SHT_HIPROC
=0x7fffffff,
195 SHT_LOUSER
=0x80000000,
196 SHT_HIUSER
=0xffffffff,
197 SHT_AMD64_UNWIND
=0x70000001,
198 SHT_SUNW_LDYNSYM
=0x6ffffff3,
199 SHT_SUNW_syminfo
=0x6ffffffc,
200 SHT_ARM_EXIDX
=0x70000001, # also SHT_MIPS_MSYM
201 SHT_ARM_PREEMPTMAP
=0x70000002, # also SHT_MIPS_CONFLICT
202 SHT_ARM_ATTRIBUTES
=0x70000003, # also SHT_MIPS_GPTAB
203 SHT_ARM_DEBUGOVERLAY
=0x70000004, # also SHT_MIPS_UCODE
204 SHT_MIPS_LIBLIST
=0x70000000,
205 SHT_MIPS_DEBUG
=0x70000005,
206 SHT_MIPS_REGINFO
=0x70000006,
207 SHT_MIPS_PACKAGE
=0x70000007,
208 SHT_MIPS_PACKSYM
=0x70000008,
209 SHT_MIPS_RELD
=0x70000009,
210 SHT_MIPS_IFACE
=0x7000000b,
211 SHT_MIPS_CONTENT
=0x7000000c,
212 SHT_MIPS_OPTIONS
=0x7000000d,
213 SHT_MIPS_SHDR
=0x70000010,
214 SHT_MIPS_FDESC
=0x70000011,
215 SHT_MIPS_EXTSYM
=0x70000012,
216 SHT_MIPS_DENSE
=0x70000013,
217 SHT_MIPS_PDESC
=0x70000014,
218 SHT_MIPS_LOCSYM
=0x70000015,
219 SHT_MIPS_AUXSYM
=0x70000016,
220 SHT_MIPS_OPTSYM
=0x70000017,
221 SHT_MIPS_LOCSTR
=0x70000018,
222 SHT_MIPS_LINE
=0x70000019,
223 SHT_MIPS_RFDESC
=0x7000001a,
224 SHT_MIPS_DELTASYM
=0x7000001b,
225 SHT_MIPS_DELTAINST
=0x7000001c,
226 SHT_MIPS_DELTACLASS
=0x7000001d,
227 SHT_MIPS_DWARF
=0x7000001e,
228 SHT_MIPS_DELTADECL
=0x7000001f,
229 SHT_MIPS_SYMBOL_LIB
=0x70000020,
230 SHT_MIPS_EVENTS
=0x70000021,
231 SHT_MIPS_TRANSLATE
=0x70000022,
232 SHT_MIPS_PIXIE
=0x70000023,
233 SHT_MIPS_XLATE
=0x70000024,
234 SHT_MIPS_XLATE_DEBUG
=0x70000025,
235 SHT_MIPS_WHIRL
=0x70000026,
236 SHT_MIPS_EH_REGION
=0x70000027,
237 SHT_MIPS_XLATE_OLD
=0x70000028,
238 SHT_MIPS_PDR_EXCEPTION
=0x70000029,
242 # p_type in the program header
243 # some values scavenged from the ELF headers in binutils-2.21
255 PT_LOPROC
=0x70000000,
256 PT_HIPROC
=0x7fffffff,
257 PT_GNU_EH_FRAME
=0x6474e550,
258 PT_GNU_STACK
=0x6474e551,
259 PT_GNU_RELRO
=0x6474e552,
260 PT_ARM_ARCHEXT
=0x70000000,
261 PT_ARM_EXIDX
=0x70000001,
262 PT_ARM_UNWIND
=0x70000001,
263 PT_AARCH64_ARCHEXT
=0x70000000,
264 PT_AARCH64_UNWIND
=0x70000001,
268 # st_info bindings in the symbol header
269 ENUM_ST_INFO_BIND
= dict(
281 # st_info type in the symbol header
282 ENUM_ST_INFO_TYPE
= dict(
300 # visibility from st_other
301 ENUM_ST_VISIBILITY
= dict(
313 ENUM_ST_SHNDX
= dict(
355 DT_PREINIT_ARRAYSZ
=33,
358 DT_SUNW_AUXILIARY
=0x6000000d,
359 DT_SUNW_RTLDINF
=0x6000000e,
360 DT_SUNW_FILTER
=0x6000000f,
361 DT_SUNW_CAP
=0x60000010,
362 DT_SUNW_SYMTAB
=0x60000011,
363 DT_SUNW_SYMSZ
=0x60000012,
364 DT_SUNW_ENCODING
=0x60000013,
365 DT_SUNW_SORTENT
=0x60000013,
366 DT_SUNW_SYMSORT
=0x60000014,
367 DT_SUNW_SYMSORTSZ
=0x60000015,
368 DT_SUNW_TLSSORT
=0x60000016,
369 DT_SUNW_TLSSORTSZ
=0x60000017,
370 DT_SUNW_CAPINFO
=0x60000018,
371 DT_SUNW_STRPAD
=0x60000019,
372 DT_SUNW_CAPCHAIN
=0x6000001a,
373 DT_SUNW_LDMACH
=0x6000001b,
374 DT_SUNW_CAPCHAINENT
=0x6000001d,
375 DT_SUNW_CAPCHAINSZ
=0x6000001f,
377 DT_LOPROC
=0x70000000,
378 DT_HIPROC
=0x7fffffff,
380 DT_VALRNGLO
=0x6ffffd00,
381 DT_GNU_PRELINKED
=0x6ffffdf5,
382 DT_GNU_CONFLICTSZ
=0x6ffffdf6,
383 DT_GNU_LIBLISTSZ
=0x6ffffdf7,
384 DT_CHECKSUM
=0x6ffffdf8,
385 DT_PLTPADSZ
=0x6ffffdf9,
386 DT_MOVEENT
=0x6ffffdfa,
387 DT_MOVESZ
=0x6ffffdfb,
388 DT_SYMINSZ
=0x6ffffdfe,
389 DT_SYMINENT
=0x6ffffdff,
390 DT_GNU_HASH
=0x6ffffef5,
391 DT_TLSDESC_PLT
=0x6ffffef6,
392 DT_TLSDESC_GOT
=0x6ffffef7,
393 DT_GNU_CONFLICT
=0x6ffffef8,
394 DT_GNU_LIBLIST
=0x6ffffef9,
395 DT_CONFIG
=0x6ffffefa,
396 DT_DEPAUDIT
=0x6ffffefb,
398 DT_PLTPAD
=0x6ffffefd,
399 DT_MOVETAB
=0x6ffffefe,
400 DT_SYMINFO
=0x6ffffeff,
401 DT_VERSYM
=0x6ffffff0,
402 DT_RELACOUNT
=0x6ffffff9,
403 DT_RELCOUNT
=0x6ffffffa,
404 DT_FLAGS_1
=0x6ffffffb,
405 DT_VERDEF
=0x6ffffffc,
406 DT_VERDEFNUM
=0x6ffffffd,
407 DT_VERNEED
=0x6ffffffe,
408 DT_VERNEEDNUM
=0x6fffffff,
409 DT_MIPS_RLD_VERSION
=0x70000001,
410 DT_MIPS_TIME_STAMP
=0x70000002,
411 DT_MIPS_ICHECKSUM
=0x70000003,
412 DT_MIPS_IVERSION
=0x70000004,
413 DT_MIPS_FLAGS
=0x70000005,
414 DT_MIPS_BASE_ADDRESS
=0x70000006,
415 DT_MIPS_CONFLICT
=0x70000008,
416 DT_MIPS_LIBLIST
=0x70000009,
417 DT_MIPS_LOCAL_GOTNO
=0x7000000a,
418 DT_MIPS_CONFLICTNO
=0x7000000b,
419 DT_MIPS_LIBLISTNO
=0x70000010,
420 DT_MIPS_SYMTABNO
=0x70000011,
421 DT_MIPS_UNREFEXTNO
=0x70000012,
422 DT_MIPS_GOTSYM
=0x70000013,
423 DT_MIPS_HIPAGENO
=0x70000014,
424 DT_MIPS_RLD_MAP
=0x70000016,
425 DT_AUXILIARY
=0x7ffffffd,
426 DT_FILTER
=0x7fffffff,
430 ENUM_RELOC_TYPE_MIPS
= dict(
462 R_MIPS_ADD_IMMEDIATE
=34,
466 R_MIPS_TLS_DTPMOD32
=38,
467 R_MIPS_TLS_DTPREL32
=39,
468 R_MIPS_TLS_DTPMOD64
=40,
469 R_MIPS_TLS_DTPREL64
=41,
472 R_MIPS_TLS_DTPREL_HI16
=44,
473 R_MIPS_TLS_DTPREL_LO16
=45,
474 R_MIPS_TLS_GOTTPREL
=46,
475 R_MIPS_TLS_TPREL32
=47,
476 R_MIPS_TLS_TPREL64
=48,
477 R_MIPS_TLS_TPREL_HI16
=49,
478 R_MIPS_TLS_TPREL_LO16
=50,
481 R_MIPS_JUMP_SLOT
=127,
485 ENUM_RELOC_TYPE_i386
= dict(
509 R_386_TLS_GD_PUSH
=25,
510 R_386_TLS_GD_CALL
=26,
513 R_386_TLS_LDM_PUSH
=29,
514 R_386_TLS_LDM_CALL
=30,
515 R_386_TLS_LDM_POP
=31,
519 R_386_TLS_DTPMOD32
=35,
520 R_386_TLS_DTPOFF32
=36,
521 R_386_TLS_TPOFF32
=37,
522 R_386_TLS_GOTDESC
=39,
523 R_386_TLS_DESC_CALL
=40,
526 R_386_USED_BY_INTEL_200
=200,
527 R_386_GNU_VTINHERIT
=250,
528 R_386_GNU_VTENTRY
=251,
532 ENUM_RELOC_TYPE_x64
= dict(
540 R_X86_64_JUMP_SLOT
=7,
549 R_X86_64_DTPMOD64
=16,
550 R_X86_64_DTPOFF64
=17,
554 R_X86_64_DTPOFF32
=21,
555 R_X86_64_GOTTPOFF
=22,
558 R_X86_64_GOTOFF64
=25,
561 R_X86_64_GOTPCREL64
=28,
563 R_X86_64_GOTPLT64
=30,
564 R_X86_64_PLTOFF64
=31,
565 R_X86_64_GOTPC32_TLSDESC
=34,
566 R_X86_64_TLSDESC_CALL
=35,
568 R_X86_64_IRELATIVE
=37,
569 R_X86_64_GNU_VTINHERIT
=250,
570 R_X86_64_GNU_VTENTRY
=251,
574 # Sunw Syminfo Bound To special values
575 ENUM_SUNW_SYMINFO_BOUNDTO
= dict(
576 SYMINFO_BT_SELF
=0xffff,
577 SYMINFO_BT_PARENT
=0xfffe,
578 SYMINFO_BT_NONE
=0xfffd,
579 SYMINFO_BT_EXTERN
=0xfffc,
583 # Versym section, version dependency index
587 VER_NDX_LORESERVE
=0xff00,
588 VER_NDX_ELIMINATE
=0xff01,
591 # Sunw Syminfo Bound To special values
592 ENUM_SUNW_SYMINFO_BOUNDTO
= dict(
593 SYMINFO_BT_SELF
=0xffff,
594 SYMINFO_BT_PARENT
=0xfffe,
595 SYMINFO_BT_NONE
=0xfffd,
596 SYMINFO_BT_EXTERN
=0xfffc,
600 # PT_NOTE section types
601 ENUM_NOTE_N_TYPE
= dict(
605 NT_GNU_GOLD_VERSION
=4,
609 # Values in GNU .note.ABI-tag notes (n_type=='NT_GNU_ABI_TAG')
610 ENUM_NOTE_ABI_TAG_OS
= dict(
613 ELF_NOTE_OS_SOLARIS2
=2,
614 ELF_NOTE_OS_FREEBSD
=3,
615 ELF_NOTE_OS_NETBSD
=4,
616 ELF_NOTE_OS_SYLLABLE
=5,
620 ENUM_RELOC_TYPE_ARM
= dict(
638 R_ARM_TLS_DTPMOD32
=17,
639 R_ARM_TLS_DTPOFF32
=18,
640 R_ARM_TLS_TPOFF32
=19,
653 R_ARM_ALU_PCREL_7_0
=32,
654 R_ARM_ALU_PCREL_15_8
=33,
655 R_ARM_ALU_PCREL_23_15
=34,
656 R_ARM_LDR_SBREL_11_0_NC
=35,
657 R_ARM_ALU_SBREL_19_12_NC
=36,
658 R_ARM_ALU_SBREL_27_20_CK
=37,
664 R_ARM_MOVW_ABS_NC
=43,
666 R_ARM_MOVW_PREL_NC
=45,
668 R_ARM_THM_MOVW_ABS_NC
=47,
669 R_ARM_THM_MOVT_ABS
=48,
670 R_ARM_THM_MOVW_PREL_NC
=49,
671 R_ARM_THM_MOVT_PREL
=50,
674 R_ARM_THM_ALU_PREL_11_0
=53,
678 R_ARM_ALU_PC_G0_NC
=57,
680 R_ARM_ALU_PC_G1_NC
=59,
691 R_ARM_ALU_SB_G0_NC
=70,
693 R_ARM_ALU_SB_G1_NC
=72,
705 R_ARM_MOVW_BREL_NC
=84,
708 R_ARM_THM_MOVW_BREL_NC
=87,
709 R_ARM_THM_MOVT_BREL
=88,
710 R_ARM_THM_MOVW_BREL
=89,
717 R_ARM_GNU_VTENTRY
=100,
718 R_ARM_GNU_VTINHERIT
=101,
719 R_ARM_THM_JUMP11
=102,
728 R_ARM_TLS_IE12GP
=111,
739 R_ARM_PRIVATE_10
=122,
740 R_ARM_PRIVATE_11
=123,
741 R_ARM_PRIVATE_12
=124,
742 R_ARM_PRIVATE_13
=125,
743 R_ARM_PRIVATE_14
=126,
744 R_ARM_PRIVATE_15
=127,
746 R_ARM_THM_TLS_DESCSEQ16
=129,
747 R_ARM_THM_TLS_DESCSEQ32
=130,
748 R_ARM_THM_GOT_BREL12
=131,
752 ENUM_RELOC_TYPE_AARCH64
= dict(
757 R_AARCH64_PREL64
=260,
758 R_AARCH64_PREL32
=261,
759 R_AARCH64_PREL16
=262,
760 R_AARCH64_MOVW_UABS_G0
=263,
761 R_AARCH64_MOVW_UABS_G0_NC
=264,
762 R_AARCH64_MOVW_UABS_G1
=265,
763 R_AARCH64_MOVW_UABS_G1_NC
=266,
764 R_AARCH64_MOVW_UABS_G2
=267,
765 R_AARCH64_MOVW_UABS_G2_NC
=268,
766 R_AARCH64_MOVW_UABS_G3
=269,
767 R_AARCH64_MOVW_SABS_G0
=270,
768 R_AARCH64_MOVW_SABS_G1
=271,
769 R_AARCH64_MOVW_SABS_G2
=272,
770 R_AARCH64_LD_PREL_LO19
=273,
771 R_AARCH64_ADR_PREL_LO21
=274,
772 R_AARCH64_ADR_PREL_PG_HI21
=275,
773 R_AARCH64_ADR_PREL_PG_HI21_NC
=276,
774 R_AARCH64_ADD_ABS_LO12_NC
=277,
775 R_AARCH64_LDST8_ABS_LO12_NC
=278,
776 R_AARCH64_TSTBR14
=279,
777 R_AARCH64_CONDBR19
=280,
778 R_AARCH64_JUMP26
=282,
779 R_AARCH64_CALL26
=283,
780 R_AARCH64_LDST16_ABS_LO12_NC
=284,
781 R_AARCH64_LDST32_ABS_LO12_NC
=285,
782 R_AARCH64_LDST64_ABS_LO12_NC
=286,
783 R_AARCH64_MOVW_PREL_G0
=287,
784 R_AARCH64_MOVW_PREL_G0_NC
=288,
785 R_AARCH64_MOVW_PREL_G1
=289,
786 R_AARCH64_MOVW_PREL_G1_NC
=290,
787 R_AARCH64_MOVW_PREL_G2
=291,
788 R_AARCH64_MOVW_PREL_G2_NC
=292,
789 R_AARCH64_MOVW_PREL_G3
=293,
790 R_AARCH64_MOVW_GOTOFF_G0
=300,
791 R_AARCH64_MOVW_GOTOFF_G0_NC
=301,
792 R_AARCH64_MOVW_GOTOFF_G1
=302,
793 R_AARCH64_MOVW_GOTOFF_G1_NC
=303,
794 R_AARCH64_MOVW_GOTOFF_G2
=304,
795 R_AARCH64_MOVW_GOTOFF_G2_NC
=305,
796 R_AARCH64_MOVW_GOTOFF_G3
=306,
797 R_AARCH64_GOTREL64
=307,
798 R_AARCH64_GOTREL32
=308,
799 R_AARCH64_GOT_LD_PREL19
=309,
800 R_AARCH64_LD64_GOTOFF_LO15
=310,
801 R_AARCH64_ADR_GOT_PAGE
=311,
802 R_AARCH64_LD64_GOT_LO12_NC
=312,
803 R_AARCH64_TLSGD_ADR_PREL21
=512,
804 R_AARCH64_TLSGD_ADR_PAGE21
=513,
805 R_AARCH64_TLSGD_ADD_LO12_NC
=514,
806 R_AARCH64_TLSGD_MOVW_G1
=515,
807 R_AARCH64_TLSGD_MOVW_G0_NC
=516,
808 R_AARCH64_TLSLD_ADR_PREL21
=517,
809 R_AARCH64_TLSLD_ADR_PAGE21
=518,
810 R_AARCH64_TLSLD_ADD_LO12_NC
=519,
811 R_AARCH64_TLSLD_MOVW_G1
=520,
812 R_AARCH64_TLSLD_MOVW_G0_NC
=521,
813 R_AARCH64_TLSLD_LD_PREL19
=522,
814 R_AARCH64_TLSLD_MOVW_DTPREL_G2
=523,
815 R_AARCH64_TLSLD_MOVW_DTPREL_G1
=524,
816 R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC
=525,
817 R_AARCH64_TLSLD_MOVW_DTPREL_G0
=526,
818 R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC
=527,
819 R_AARCH64_TLSLD_ADD_DTPREL_HI12
=528,
820 R_AARCH64_TLSLD_ADD_DTPREL_LO12
=529,
821 R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC
=530,
822 R_AARCH64_TLSLD_LDST8_DTPREL_LO12
=531,
823 R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC
=532,
824 R_AARCH64_TLSLD_LDST16_DTPREL_LO12
=533,
825 R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC
=534,
826 R_AARCH64_TLSLD_LDST32_DTPREL_LO12
=535,
827 R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC
=536,
828 R_AARCH64_TLSLD_LDST64_DTPREL_LO12
=537,
829 R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC
=538,
830 R_AARCH64_TLSIE_MOVW_GOTTPREL_G1
=539,
831 R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC
=540,
832 R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21
=541,
833 R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC
=542,
834 R_AARCH64_TLSIE_LD_GOTTPREL_PREL19
=543,
835 R_AARCH64_TLSLE_MOVW_TPREL_G2
=544,
836 R_AARCH64_TLSLE_MOVW_TPREL_G1
=545,
837 R_AARCH64_TLSLE_MOVW_TPREL_G1_NC
=546,
838 R_AARCH64_TLSLE_MOVW_TPREL_G0
=547,
839 R_AARCH64_TLSLE_MOVW_TPREL_G0_NC
=548,
840 R_AARCH64_TLSLE_ADD_TPREL_HI12
=549,
841 R_AARCH64_TLSLE_ADD_TPREL_LO12
=550,
842 R_AARCH64_TLSLE_ADD_TPREL_LO12_NC
=551,
843 R_AARCH64_TLSLE_LDST8_TPREL_LO12
=552,
844 R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC
=553,
845 R_AARCH64_TLSLE_LDST16_TPREL_LO12
=554,
846 R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC
=555,
847 R_AARCH64_TLSLE_LDST32_TPREL_LO12
=556,
848 R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC
=557,
849 R_AARCH64_TLSLE_LDST64_TPREL_LO12
=558,
850 R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC
=559,
852 R_AARCH64_GLOB_DAT
=1025,
853 R_AARCH64_JUMP_SLOT
=1026,
854 R_AARCH64_RELATIVE
=1027,
855 R_AARCH64_TLS_DTPREL64
=1028,
856 R_AARCH64_TLS_DTPMOD64
=1029,
857 R_AARCH64_TLS_TPREL64
=1030,
858 R_AARCH64_TLS_DTPREL32
=1031,
859 R_AARCH64_TLS_DTPMOD32
=1032,
860 R_AARCH64_TLS_TPREL32
=1033,