displaying symtables kinda works
[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 )
31
32 # e_ident[EI_OSABI] in the ELF header
33 ENUM_EI_OSABI = dict(
34 ELFOSABI_SYSV=0,
35 ELFOSABI_HPUX=1,
36 ELFOSABI_NETBSD=2,
37 ELFOSABI_LINUX=3,
38 ELFOSABI_HURD=4,
39 ELFOSABI_SOLARIS=6,
40 ELFOSABI_AIX=7,
41 ELFOSABI_IRIX=8,
42 ELFOSABI_FREEBSD=9,
43 ELFOSABI_TRU64=10,
44 ELFOSABI_MODESTO=11,
45 ELFOSABI_OPENBSD=12,
46 ELFOSABI_OPENVMS=13,
47 ELFOSABI_NSK=14,
48 ELFOSABI_AROS=15,
49 ELFOSABI_ARM=97,
50 ELFOSABI_STANDALONE=255,
51 )
52
53 # e_type in the ELF header
54 ENUM_E_TYPE = dict(
55 ET_NONE=0,
56 ET_REL=1,
57 ET_EXEC=2,
58 ET_DYN=3,
59 ET_CORE=4,
60 ET_LOPROC=0xff00,
61 ET_HIPROC=0xffff,
62 _default_='PROC_SPECIFIC',
63 )
64
65 # e_machine in the ELF header
66 # (this list is currently somewhat partial...)
67 ENUM_E_MACHINE = dict(
68 EM_NONE=0,
69 EM_M32=1,
70 EM_SPARC=2,
71 EM_386=3,
72 EM_68K=4,
73 EM_88K=5,
74 EM_860=7,
75 EM_MIPS=8,
76 EM_S370=9,
77 EM_MIPS_RS4_BE=10,
78 EM_IA_64=50,
79 EM_X86_64=62,
80 EM_AVR=83,
81 _default_='RESERVED',
82 )
83
84 # sh_type in the section header
85 ENUM_SH_TYPE = dict(
86 SHT_NULL=0,
87 SHT_PROGBITS=1,
88 SHT_SYMTAB=2,
89 SHT_STRTAB=3,
90 SHT_RELA=4,
91 SHT_HASH=5,
92 SHT_DYNAMIC=6,
93 SHT_NOTE=7,
94 SHT_NOBITS=8,
95 SHT_REL=9,
96 SHT_SHLIB=10,
97 SHT_DYNSYM=11,
98 SHT_INIT_ARRAY=14,
99 SHT_FINI_ARRAY=15,
100 SHT_PREINIT_ARRAY=16,
101 SHT_GROUP=17,
102 SHT_SYMTAB_SHNDX=18,
103 SHT_NUM=19,
104 SHT_LOOS=0x60000000,
105 SHT_GNU_HASH=0x6ffffff6,
106 SHT_GNU_verdef=0x6ffffffd,
107 SHT_GNU_verneed=0x6ffffffe,
108 SHT_GNU_versym=0x6fffffff,
109 SHT_LOPROC=0x70000000,
110 SHT_HIPROC=0x7fffffff,
111 SHT_LOUSER=0x80000000,
112 SHT_HIUSER=0xffffffff,
113 SHT_AMD64_UNWIND=0x70000001,
114 _default_='RESERVED',
115 )
116
117 # p_type in the program header
118 # some values scavenged from the ELF headers in binutils-2.21
119 ENUM_P_TYPE = dict(
120 PT_NULL=0,
121 PT_LOAD=1,
122 PT_DYNAMIC=2,
123 PT_INTERP=3,
124 PT_NOTE=4,
125 PT_SHLIB=5,
126 PT_PHDR=6,
127 PT_TLS=7,
128 PT_LOPROC=0x70000000,
129 PT_HIPROC=0x7fffffff,
130 PT_GNU_EH_FRAME=0x6474e550,
131 PT_GNU_STACK=0x6474e551,
132 PT_GNU_RELRO=0x6474e552,
133 )
134
135 # st_info bindings in the symbol header
136 ENUM_ST_INFO_BIND = dict(
137 STB_LOCAL=0,
138 STB_GLOBAL=1,
139 STB_WEAK=2,
140 STB_NUM=3,
141 STB_LOOS=10,
142 STB_HIOS=12,
143 STB_LOPROC=13,
144 STB_HIPROC=15,
145 )
146
147 # st_info type in the symbol header
148 ENUM_ST_INFO_TYPE = dict(
149 STT_NOTYPE=0,
150 STT_OBJECT=1,
151 STT_FUNC=2,
152 STT_SECTION=3,
153 STT_FILE=4,
154 STT_COMMON=5,
155 STT_TLS=6,
156 STT_NUM=7,
157 STT_RELC=8,
158 STT_SRELC=9,
159 STT_LOOS=10,
160 STT_HIOS=12,
161 STT_LOPROC=13,
162 STT_HIPROC=15,
163 )
164
165 # visibility from st_other
166 ENUM_ST_VISIBILITY = dict(
167 STV_DEFAULT=0,
168 STV_INTERNAL=1,
169 STV_HIDDEN=2,
170 STV_PROTECTED=3,
171 )
172
173 # st_shndx
174 ENUM_ST_SHNDX = dict(
175 SHN_UNDEF=0,
176 SHN_ABS=0xfff1,
177 SHN_COMMON=0xfff2,
178 _default_=Pass,
179 )
180