File: constants.py

package info (click to toggle)
python-pyelftools 0.32-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 68,964 kB
  • sloc: python: 15,903; ansic: 298; asm: 86; makefile: 24; cpp: 18; sh: 4
file content (176 lines) | stat: -rw-r--r-- 4,952 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#-------------------------------------------------------------------------------
# elftools: elf/constants.py
#
# Constants and flags, placed into classes for namespacing
#
# Eli Bendersky (eliben@gmail.com)
# This code is in the public domain
#-------------------------------------------------------------------------------

class E_FLAGS(object):
    """ Flag values for the e_flags field of the ELF header
    """
    EF_ARM_EABIMASK=0xFF000000
    EF_ARM_EABI_VER1=0x01000000
    EF_ARM_EABI_VER2=0x02000000
    EF_ARM_EABI_VER3=0x03000000
    EF_ARM_EABI_VER4=0x04000000
    EF_ARM_EABI_VER5=0x05000000
    EF_ARM_GCCMASK=0x00400FFF
    EF_ARM_RELEXEC=0x01
    EF_ARM_HASENTRY=0x02
    EF_ARM_SYMSARESORTED=0x04
    EF_ARM_DYNSYMSUSESEGIDX=0x8
    EF_ARM_MAPSYMSFIRST=0x10
    EF_ARM_LE8=0x00400000
    EF_ARM_BE8=0x00800000
    EF_ARM_ABI_FLOAT_SOFT=0x00000200
    EF_ARM_ABI_FLOAT_HARD=0x00000400

    EF_PPC64_ABI_V0=0
    EF_PPC64_ABI_V1=1
    EF_PPC64_ABI_V2=2

    EF_MIPS_NOREORDER=1
    EF_MIPS_PIC=2
    EF_MIPS_CPIC=4
    EF_MIPS_XGOT=8
    EF_MIPS_64BIT_WHIRL=16
    EF_MIPS_ABI2=32
    EF_MIPS_ABI_ON32=64
    EF_MIPS_32BITMODE = 256
    EF_MIPS_NAN2008=1024
    EF_MIPS_ARCH=0xf0000000
    EF_MIPS_ARCH_1=0x00000000
    EF_MIPS_ARCH_2=0x10000000
    EF_MIPS_ARCH_3=0x20000000
    EF_MIPS_ARCH_4=0x30000000
    EF_MIPS_ARCH_5=0x40000000
    EF_MIPS_ARCH_32=0x50000000
    EF_MIPS_ARCH_64=0x60000000
    EF_MIPS_ARCH_32R2=0x70000000
    EF_MIPS_ARCH_64R2=0x80000000

    EF_RISCV_RVC=0x00000001
    EF_RISCV_FLOAT_ABI=0x00000006
    EF_RISCV_FLOAT_ABI_SOFT=0x00000000
    EF_RISCV_FLOAT_ABI_SINGLE=0x00000002
    EF_RISCV_FLOAT_ABI_DOUBLE=0x00000004
    EF_RISCV_FLOAT_ABI_QUAD=0x00000006
    EF_RISCV_RVE=0x00000008
    EF_RISCV_TSO=0x00000010

    EF_LOONGARCH_OBJABI_MASK=0x000000C0
    EF_LOONGARCH_OBJABI_V0=0x00000000
    EF_LOONGARCH_OBJABI_V1=0x00000040
    EF_LOONGARCH_ABI_MODIFIER_MASK=0x00000007
    EF_LOONGARCH_ABI_SOFT_FLOAT=0x00000001
    EF_LOONGARCH_ABI_SINGLE_FLOAT=0x00000002
    EF_LOONGARCH_ABI_DOUBLE_FLOAT=0x00000003
    # The names in the glibc elf.h say "LARCH" instead of "LOONGARCH",
    # provide these names for users' convenience.
    EF_LARCH_OBJABI_MASK = EF_LOONGARCH_OBJABI_MASK
    EF_LARCH_OBJABI_V0 = EF_LOONGARCH_OBJABI_V0
    EF_LARCH_OBJABI_V1 = EF_LOONGARCH_OBJABI_V1
    EF_LARCH_ABI_MODIFIER_MASK = EF_LOONGARCH_ABI_MODIFIER_MASK
    EF_LARCH_ABI_SOFT_FLOAT = EF_LOONGARCH_ABI_SOFT_FLOAT
    EF_LARCH_ABI_SINGLE_FLOAT = EF_LOONGARCH_ABI_SINGLE_FLOAT
    EF_LARCH_ABI_DOUBLE_FLOAT = EF_LOONGARCH_ABI_DOUBLE_FLOAT

class E_FLAGS_MASKS(object):
    """Masks to be used for convenience when working with E_FLAGS

    This is a simplified approach that is also used by GNU binutils
    readelf
    """
    EFM_MIPS_ABI = 0x0000F000
    EFM_MIPS_ABI_O32 = 0x00001000
    EFM_MIPS_ABI_O64 = 0x00002000
    EFM_MIPS_ABI_EABI32 = 0x00003000
    EFM_MIPS_ABI_EABI64 = 0x00004000


class SHN_INDICES(object):
    """ Special section indices
    """
    SHN_UNDEF=0
    SHN_LORESERVE=0xff00
    SHN_LOPROC=0xff00
    SHN_HIPROC=0xff1f
    SHN_ABS=0xfff1
    SHN_COMMON=0xfff2
    SHN_HIRESERVE=0xffff
    SHN_XINDEX=0xffff


class SH_FLAGS(object):
    """ Flag values for the sh_flags field of section headers
    """
    SHF_WRITE=0x1
    SHF_ALLOC=0x2
    SHF_EXECINSTR=0x4
    SHF_MERGE=0x10
    SHF_STRINGS=0x20
    SHF_INFO_LINK=0x40
    SHF_LINK_ORDER=0x80
    SHF_OS_NONCONFORMING=0x100
    SHF_GROUP=0x200
    SHF_TLS=0x400
    SHF_COMPRESSED=0x800
    SHF_MASKOS=0x0ff00000
    SHF_EXCLUDE=0x80000000
    SHF_MASKPROC=0xf0000000


class RH_FLAGS(object):
    """ Flag values for the DT_MIPS_FLAGS dynamic table entries
    """
    RHF_NONE=0x00000000
    RHF_QUICKSTART=0x00000001
    RHF_NOTPOT=0x00000002
    RHF_NO_LIBRARY_REPLACEMENT=0x00000004
    RHF_NO_MOVE=0x00000008
    RHF_SGI_ONLY=0x00000010
    RHF_GUARANTEE_INIT=0x00000020
    RHF_DELTA_C_PLUS_PLUS=0x00000040
    RHF_GUARANTEE_START_INIT=0x00000080
    RHF_PIXIE=0x00000100
    RHF_DEFAULT_DELAY_LOAD=0x00000200
    RHF_REQUICKSTART=0x00000400
    RHF_REQUICKSTARTED=0x00000800
    RHF_CORD=0x00001000
    RHF_NO_UNRES_UNDEF=0x00002000
    RHF_RLD_ORDER_SAFE=0x00004000


class P_FLAGS(object):
    """ Flag values for the p_flags field of program headers
    """
    PF_X=0x1
    PF_W=0x2
    PF_R=0x4
    PF_MASKOS=0x00FF0000
    PF_MASKPROC=0xFF000000


# symbol info flags for entries
# in the .SUNW_syminfo section
class SUNW_SYMINFO_FLAGS(object):
    """ Flags for the si_flags field of entries
        in the .SUNW_syminfo section
    """
    SYMINFO_FLG_DIRECT=0x1
    SYMINFO_FLG_FILTER=0x2
    SYMINFO_FLG_COPY=0x4
    SYMINFO_FLG_LAZYLOAD=0x8
    SYMINFO_FLG_DIRECTBIND=0x10
    SYMINFO_FLG_NOEXTDIRECT=0x20
    SYMINFO_FLG_AUXILIARY=0x40
    SYMINFO_FLG_INTERPOSE=0x80
    SYMINFO_FLG_CAP=0x100
    SYMINFO_FLG_DEFERRED=0x200

class VER_FLAGS(object):
    VER_FLG_BASE=0x1
    VER_FLG_WEAK=0x2
    VER_FLG_INFO=0x4