Section to segment mapping seems to be working - yay!
[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
10 # e_ident[EI_CLASS] in the ELF header
11 ENUM_EI_CLASS = dict(
12 ELFCLASSNONE=0,
13 ELFCLASS32=1,
14 ELFCLASS64=2
15 )
16
17 # e_ident[EI_DATA] in the ELF header
18 ENUM_EI_DATA = dict(
19 ELFDATANONE=0,
20 ELFDATA2LSB=1,
21 ELFDATA2MSB=2
22 )
23
24 # e_version in the ELF header
25 ENUM_E_VERSION = dict(
26 EV_NONE=0,
27 EV_CURRENT=1
28 )
29
30 # e_ident[EI_OSABI] in the ELF header
31 ENUM_EI_OSABI = dict(
32 ELFOSABI_SYSV=0,
33 ELFOSABI_HPUX=1,
34 ELFOSABI_NETBSD=2,
35 ELFOSABI_LINUX=3,
36 ELFOSABI_HURD=4,
37 ELFOSABI_SOLARIS=6,
38 ELFOSABI_AIX=7,
39 ELFOSABI_IRIX=8,
40 ELFOSABI_FREEBSD=9,
41 ELFOSABI_TRU64=10,
42 ELFOSABI_MODESTO=11,
43 ELFOSABI_OPENBSD=12,
44 ELFOSABI_OPENVMS=13,
45 ELFOSABI_NSK=14,
46 ELFOSABI_AROS=15,
47 ELFOSABI_ARM=97,
48 ELFOSABI_STANDALONE=255,
49 )
50
51 # e_type in the ELF header
52 ENUM_E_TYPE = dict(
53 ET_NONE=0,
54 ET_REL=1,
55 ET_EXEC=2,
56 ET_DYN=3,
57 ET_CORE=4,
58 ET_LOPROC=0xff00,
59 ET_HIPROC=0xffff,
60 _default_='PROC_SPECIFIC',
61 )
62
63 # e_machine in the ELF header
64 # (this list is currently somewhat partial...)
65 ENUM_E_MACHINE = dict(
66 EM_NONE=0,
67 EM_M32=1,
68 EM_SPARC=2,
69 EM_386=3,
70 EM_68K=4,
71 EM_88K=5,
72 EM_860=7,
73 EM_MIPS=8,
74 EM_S370=9,
75 EM_MIPS_RS4_BE=10,
76 EM_IA_64=50,
77 EM_X86_64=62,
78 EM_AVR=83,
79 _default_='RESERVED',
80 )
81
82 # sh_type in the section header
83 ENUM_SH_TYPE = dict(
84 SHT_NULL=0,
85 SHT_PROGBITS=1,
86 SHT_SYMTAB=2,
87 SHT_STRTAB=3,
88 SHT_RELA=4,
89 SHT_HASH=5,
90 SHT_DYNAMIC=6,
91 SHT_NOTE=7,
92 SHT_NOBITS=8,
93 SHT_REL=9,
94 SHT_SHLIB=10,
95 SHT_DYNSYM=11,
96 SHT_INIT_ARRAY=14,
97 SHT_FINI_ARRAY=15,
98 SHT_PREINIT_ARRAY=16,
99 SHT_GROUP=17,
100 SHT_SYMTAB_SHNDX=18,
101 SHT_NUM=19,
102 SHT_LOOS=0x60000000,
103 SHT_HIOS=0x6fffffff,
104 SHT_LOPROC=0x70000000,
105 SHT_HIPROC=0x7fffffff,
106 SHT_LOUSER=0x80000000,
107 SHT_HIUSER=0xffffffff,
108 SHT_AMD64_UNWIND=0x70000001,
109 _default_='RESERVED',
110 )
111
112 # p_type in the program header
113 # some values scavenged from the ELF headers in binutils-2.21
114 ENUM_P_TYPE = dict(
115 PT_NULL=0,
116 PT_LOAD=1,
117 PT_DYNAMIC=2,
118 PT_INTERP=3,
119 PT_NOTE=4,
120 PT_SHLIB=5,
121 PT_PHDR=6,
122 PT_TLS=7,
123 PT_LOPROC=0x70000000,
124 PT_HIPROC=0x7fffffff,
125 PT_GNU_EH_FRAME=0x6474e550,
126 PT_GNU_STACK=0x6474e551,
127 PT_GNU_RELRO=0x6474e552,
128 )
129
130 # st_info bindings in the symbol header
131 ENUM_ST_INFO_BIND = dict(
132 STB_LOCAL=0,
133 STB_GLOBAL=1,
134 STB_WEAK=2,
135 STB_NUM=3,
136 STB_LOOS=10,
137 STB_HIOS=12,
138 STB_LOPROC=13,
139 STB_HIPROC=15,
140 )
141
142 # st_info type in the symbol header
143 ENUM_ST_INFO_TYPE = dict(
144 STT_NOTYPE=0,
145 STT_OBJECT=1,
146 STT_FUNC=2,
147 STT_SECTION=3,
148 STT_FILE=4,
149 STT_COMMON=5,
150 STT_TLS=6,
151 STT_NUM=7,
152 STT_LOOS=10,
153 STT_HIOS=12,
154 STT_LOPROC=13,
155 STT_HIPROC=15,
156 )