Add support for LoongArch (#470)
[pyelftools.git] / elftools / elf / constants.py
1 #-------------------------------------------------------------------------------
2 # elftools: elf/constants.py
3 #
4 # Constants and flags, placed into classes for namespacing
5 #
6 # Eli Bendersky (eliben@gmail.com)
7 # This code is in the public domain
8 #-------------------------------------------------------------------------------
9
10 class E_FLAGS(object):
11 """ Flag values for the e_flags field of the ELF header
12 """
13 EF_ARM_EABIMASK=0xFF000000
14 EF_ARM_EABI_VER1=0x01000000
15 EF_ARM_EABI_VER2=0x02000000
16 EF_ARM_EABI_VER3=0x03000000
17 EF_ARM_EABI_VER4=0x04000000
18 EF_ARM_EABI_VER5=0x05000000
19 EF_ARM_GCCMASK=0x00400FFF
20 EF_ARM_RELEXEC=0x01
21 EF_ARM_HASENTRY=0x02
22 EF_ARM_SYMSARESORTED=0x04
23 EF_ARM_DYNSYMSUSESEGIDX=0x8
24 EF_ARM_MAPSYMSFIRST=0x10
25 EF_ARM_LE8=0x00400000
26 EF_ARM_BE8=0x00800000
27 EF_ARM_ABI_FLOAT_SOFT=0x00000200
28 EF_ARM_ABI_FLOAT_HARD=0x00000400
29
30 EF_PPC64_ABI_V0=0
31 EF_PPC64_ABI_V1=1
32 EF_PPC64_ABI_V2=2
33
34 EF_MIPS_NOREORDER=1
35 EF_MIPS_PIC=2
36 EF_MIPS_CPIC=4
37 EF_MIPS_XGOT=8
38 EF_MIPS_64BIT_WHIRL=16
39 EF_MIPS_ABI2=32
40 EF_MIPS_ABI_ON32=64
41 EF_MIPS_32BITMODE = 256
42 EF_MIPS_NAN2008=1024
43 EF_MIPS_ARCH=0xf0000000
44 EF_MIPS_ARCH_1=0x00000000
45 EF_MIPS_ARCH_2=0x10000000
46 EF_MIPS_ARCH_3=0x20000000
47 EF_MIPS_ARCH_4=0x30000000
48 EF_MIPS_ARCH_5=0x40000000
49 EF_MIPS_ARCH_32=0x50000000
50 EF_MIPS_ARCH_64=0x60000000
51 EF_MIPS_ARCH_32R2=0x70000000
52 EF_MIPS_ARCH_64R2=0x80000000
53
54 EF_RISCV_RVC=0x00000001
55 EF_RISCV_FLOAT_ABI=0x00000006
56 EF_RISCV_FLOAT_ABI_SOFT=0x00000000
57 EF_RISCV_FLOAT_ABI_SINGLE=0x00000002
58 EF_RISCV_FLOAT_ABI_DOUBLE=0x00000004
59 EF_RISCV_FLOAT_ABI_QUAD=0x00000006
60 EF_RISCV_RVE=0x00000008
61 EF_RISCV_TSO=0x00000010
62
63 EF_LOONGARCH_ABI=0x000000C0
64 EF_LOONGARCH_ABI_V0=0x00000000
65 EF_LOONGARCH_ABI_V1=0x00000040
66 EF_LOONGARCH_FLOAT_ABI=0x00000003
67 EF_LOONGARCH_FLOAT_ABI_SOFT=0x00000001
68 EF_LOONGARCH_FLOAT_ABI_SINGLE=0x00000002
69 EF_LOONGARCH_FLOAT_ABI_DOUBLE=0x00000003
70
71 class E_FLAGS_MASKS(object):
72 """Masks to be used for convenience when working with E_FLAGS
73
74 This is a simplified approach that is also used by GNU binutils
75 readelf
76 """
77 EFM_MIPS_ABI = 0x0000F000
78 EFM_MIPS_ABI_O32 = 0x00001000
79 EFM_MIPS_ABI_O64 = 0x00002000
80 EFM_MIPS_ABI_EABI32 = 0x00003000
81 EFM_MIPS_ABI_EABI64 = 0x00004000
82
83
84 class SHN_INDICES(object):
85 """ Special section indices
86 """
87 SHN_UNDEF=0
88 SHN_LORESERVE=0xff00
89 SHN_LOPROC=0xff00
90 SHN_HIPROC=0xff1f
91 SHN_ABS=0xfff1
92 SHN_COMMON=0xfff2
93 SHN_HIRESERVE=0xffff
94 SHN_XINDEX=0xffff
95
96
97 class SH_FLAGS(object):
98 """ Flag values for the sh_flags field of section headers
99 """
100 SHF_WRITE=0x1
101 SHF_ALLOC=0x2
102 SHF_EXECINSTR=0x4
103 SHF_MERGE=0x10
104 SHF_STRINGS=0x20
105 SHF_INFO_LINK=0x40
106 SHF_LINK_ORDER=0x80
107 SHF_OS_NONCONFORMING=0x100
108 SHF_GROUP=0x200
109 SHF_TLS=0x400
110 SHF_COMPRESSED=0x800
111 SHF_MASKOS=0x0ff00000
112 SHF_EXCLUDE=0x80000000
113 SHF_MASKPROC=0xf0000000
114
115
116 class RH_FLAGS(object):
117 """ Flag values for the DT_MIPS_FLAGS dynamic table entries
118 """
119 RHF_NONE=0x00000000
120 RHF_QUICKSTART=0x00000001
121 RHF_NOTPOT=0x00000002
122 RHF_NO_LIBRARY_REPLACEMENT=0x00000004
123 RHF_NO_MOVE=0x00000008
124 RHF_SGI_ONLY=0x00000010
125 RHF_GUARANTEE_INIT=0x00000020
126 RHF_DELTA_C_PLUS_PLUS=0x00000040
127 RHF_GUARANTEE_START_INIT=0x00000080
128 RHF_PIXIE=0x00000100
129 RHF_DEFAULT_DELAY_LOAD=0x00000200
130 RHF_REQUICKSTART=0x00000400
131 RHF_REQUICKSTARTED=0x00000800
132 RHF_CORD=0x00001000
133 RHF_NO_UNRES_UNDEF=0x00002000
134 RHF_RLD_ORDER_SAFE=0x00004000
135
136
137 class P_FLAGS(object):
138 """ Flag values for the p_flags field of program headers
139 """
140 PF_X=0x1
141 PF_W=0x2
142 PF_R=0x4
143 PF_MASKOS=0x00FF0000
144 PF_MASKPROC=0xFF000000
145
146
147 # symbol info flags for entries
148 # in the .SUNW_syminfo section
149 class SUNW_SYMINFO_FLAGS(object):
150 """ Flags for the si_flags field of entries
151 in the .SUNW_syminfo section
152 """
153 SYMINFO_FLG_DIRECT=0x1
154 SYMINFO_FLG_FILTER=0x2
155 SYMINFO_FLG_COPY=0x4
156 SYMINFO_FLG_LAZYLOAD=0x8
157 SYMINFO_FLG_DIRECTBIND=0x10
158 SYMINFO_FLG_NOEXTDIRECT=0x20
159 SYMINFO_FLG_AUXILIARY=0x40
160 SYMINFO_FLG_INTERPOSE=0x80
161 SYMINFO_FLG_CAP=0x100
162 SYMINFO_FLG_DEFERRED=0x200
163
164 class VER_FLAGS(object):
165 VER_FLG_BASE=0x1
166 VER_FLG_WEAK=0x2
167 VER_FLG_INFO=0x4