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
|
local M = {}
M.VERSION = 1
---@enum Osabi
M.Osabi = {
sysv = 0x00,
hpux = 0x01,
netbsd = 0x02,
linux = 0x03,
hurd = 0x04,
solaris = 0x06,
aix = 0x07,
irix = 0x08,
freebsd = 0x09,
tru64 = 0x0a,
modesto = 0x0b,
openbsd = 0x0c,
openvms = 0x0d,
nsk = 0x0e,
aros = 0x0f,
fenixos = 0x10,
cloudabi = 0x11,
openvos = 0x12,
}
---@enum Class
M.Class = {
bit32 = 0x1,
bit64 = 0x2,
}
---@enum Endian
M.Endian = {
little = 0x1,
big = 0x2,
}
---@enum Type
M.Type = {
none = 0x00,
rel = 0x01,
exec = 0x02,
dyn = 0x03,
core = 0x04,
loos = 0xfe00,
hios = 0xfeff,
loproc = 0xff00,
hiproc = 0xffff,
}
---@enum Machine
M.Machine = {
none = 0x00,
m32 = 0x01, -- AT&T WE 32100
sparc = 0x02, -- SPARC
i386 = 0x03, -- Intel 80386
m68k = 0x04, -- Motorola 68000 (M68k)
m88k = 0x05, -- Motorola 88000 (M88k)
mcu = 0x06, -- Intel MCU
i860 = 0x07, -- Intel 80860
mips = 0x08, -- MIPS
s370 = 0x09, -- IBM System/370
mipsrs3le = 0x0a, -- MIPS RS3000 Little Endian
parisc = 0x0f, -- Hewlett-Packard PA-RISC
vpp500 = 0x11, -- Fujitsu VPP500
sparc32 = 0x12, -- Enhanced instruction set SPARC
i960 = 0x13, -- Intel 80960
ppc = 0x14, -- PowerPC
ppc64 = 0x15, -- PowerPC (64-bit)
s390 = 0x16, -- IBM System/390
spu = 0x17, -- IBM SPC/SPU
v800 = 0x24, -- NEC V800
fr20 = 0x25, -- Fujitsu FR20
-- TODO
}
---@enum SegmentType
M.SegmentType = {
null = 0x00000000,
load = 0x00000001,
dynamic = 0x00000002,
interp = 0x00000003,
note = 0x00000004,
shlib = 0x00000005,
phdr = 0x00000006,
tls = 0x00000007,
loos = 0x60000000,
hios = 0x6FFFFFFF,
loproc = 0x70000000,
hiproc = 0x7FFFFFFF,
}
M.SegmentFlags = {
x = 0x1,
w = 0x2,
r = 0x4,
}
return M
|