Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
google
GitHub Repository: google/crosvm
Path: blob/main/kernel_loader/src/elf.rs
5394 views
1
/* automatically generated by tools/bindgen-all-the-things */
2
3
#![allow(clippy::missing_safety_doc)]
4
#![allow(clippy::ptr_offset_with_cast)] // https://github.com/rust-lang/rust-bindgen/issues/3053
5
#![allow(clippy::undocumented_unsafe_blocks)]
6
#![allow(clippy::upper_case_acronyms)]
7
#![allow(non_upper_case_globals)]
8
#![allow(non_camel_case_types)]
9
#![allow(non_snake_case)]
10
#![allow(dead_code)]
11
12
// Added by kernel_loader/bindgen.sh
13
use zerocopy::FromBytes;
14
use zerocopy::Immutable;
15
use zerocopy::IntoBytes;
16
use zerocopy::KnownLayout;
17
18
pub const EM_NONE: u32 = 0;
19
pub const EM_M32: u32 = 1;
20
pub const EM_SPARC: u32 = 2;
21
pub const EM_386: u32 = 3;
22
pub const EM_68K: u32 = 4;
23
pub const EM_88K: u32 = 5;
24
pub const EM_486: u32 = 6;
25
pub const EM_860: u32 = 7;
26
pub const EM_MIPS: u32 = 8;
27
pub const EM_MIPS_RS3_LE: u32 = 10;
28
pub const EM_MIPS_RS4_BE: u32 = 10;
29
pub const EM_PARISC: u32 = 15;
30
pub const EM_SPARC32PLUS: u32 = 18;
31
pub const EM_PPC: u32 = 20;
32
pub const EM_PPC64: u32 = 21;
33
pub const EM_SPU: u32 = 23;
34
pub const EM_ARM: u32 = 40;
35
pub const EM_SH: u32 = 42;
36
pub const EM_SPARCV9: u32 = 43;
37
pub const EM_H8_300: u32 = 46;
38
pub const EM_IA_64: u32 = 50;
39
pub const EM_X86_64: u32 = 62;
40
pub const EM_S390: u32 = 22;
41
pub const EM_CRIS: u32 = 76;
42
pub const EM_M32R: u32 = 88;
43
pub const EM_MN10300: u32 = 89;
44
pub const EM_OPENRISC: u32 = 92;
45
pub const EM_ARCOMPACT: u32 = 93;
46
pub const EM_XTENSA: u32 = 94;
47
pub const EM_BLACKFIN: u32 = 106;
48
pub const EM_UNICORE: u32 = 110;
49
pub const EM_ALTERA_NIOS2: u32 = 113;
50
pub const EM_TI_C6000: u32 = 140;
51
pub const EM_HEXAGON: u32 = 164;
52
pub const EM_NDS32: u32 = 167;
53
pub const EM_AARCH64: u32 = 183;
54
pub const EM_TILEPRO: u32 = 188;
55
pub const EM_MICROBLAZE: u32 = 189;
56
pub const EM_TILEGX: u32 = 191;
57
pub const EM_ARCV2: u32 = 195;
58
pub const EM_RISCV: u32 = 243;
59
pub const EM_BPF: u32 = 247;
60
pub const EM_CSKY: u32 = 252;
61
pub const EM_LOONGARCH: u32 = 258;
62
pub const EM_FRV: u32 = 21569;
63
pub const EM_ALPHA: u32 = 36902;
64
pub const EM_CYGNUS_M32R: u32 = 36929;
65
pub const EM_S390_OLD: u32 = 41872;
66
pub const EM_CYGNUS_MN10300: u32 = 48879;
67
pub const PT_NULL: u32 = 0;
68
pub const PT_LOAD: u32 = 1;
69
pub const PT_DYNAMIC: u32 = 2;
70
pub const PT_INTERP: u32 = 3;
71
pub const PT_NOTE: u32 = 4;
72
pub const PT_SHLIB: u32 = 5;
73
pub const PT_PHDR: u32 = 6;
74
pub const PT_TLS: u32 = 7;
75
pub const PT_LOOS: u32 = 1610612736;
76
pub const PT_HIOS: u32 = 1879048191;
77
pub const PT_LOPROC: u32 = 1879048192;
78
pub const PT_HIPROC: u32 = 2147483647;
79
pub const PT_GNU_EH_FRAME: u32 = 1685382480;
80
pub const PT_GNU_STACK: u32 = 1685382481;
81
pub const PT_GNU_RELRO: u32 = 1685382482;
82
pub const PT_GNU_PROPERTY: u32 = 1685382483;
83
pub const PT_AARCH64_MEMTAG_MTE: u32 = 1879048194;
84
pub const PN_XNUM: u32 = 65535;
85
pub const ET_NONE: u32 = 0;
86
pub const ET_REL: u32 = 1;
87
pub const ET_EXEC: u32 = 2;
88
pub const ET_DYN: u32 = 3;
89
pub const ET_CORE: u32 = 4;
90
pub const ET_LOPROC: u32 = 65280;
91
pub const ET_HIPROC: u32 = 65535;
92
pub const DT_NULL: u32 = 0;
93
pub const DT_NEEDED: u32 = 1;
94
pub const DT_PLTRELSZ: u32 = 2;
95
pub const DT_PLTGOT: u32 = 3;
96
pub const DT_HASH: u32 = 4;
97
pub const DT_STRTAB: u32 = 5;
98
pub const DT_SYMTAB: u32 = 6;
99
pub const DT_RELA: u32 = 7;
100
pub const DT_RELASZ: u32 = 8;
101
pub const DT_RELAENT: u32 = 9;
102
pub const DT_STRSZ: u32 = 10;
103
pub const DT_SYMENT: u32 = 11;
104
pub const DT_INIT: u32 = 12;
105
pub const DT_FINI: u32 = 13;
106
pub const DT_SONAME: u32 = 14;
107
pub const DT_RPATH: u32 = 15;
108
pub const DT_SYMBOLIC: u32 = 16;
109
pub const DT_REL: u32 = 17;
110
pub const DT_RELSZ: u32 = 18;
111
pub const DT_RELENT: u32 = 19;
112
pub const DT_PLTREL: u32 = 20;
113
pub const DT_DEBUG: u32 = 21;
114
pub const DT_TEXTREL: u32 = 22;
115
pub const DT_JMPREL: u32 = 23;
116
pub const DT_ENCODING: u32 = 32;
117
pub const OLD_DT_LOOS: u32 = 1610612736;
118
pub const DT_LOOS: u32 = 1610612749;
119
pub const DT_HIOS: u32 = 1879044096;
120
pub const DT_VALRNGLO: u32 = 1879047424;
121
pub const DT_VALRNGHI: u32 = 1879047679;
122
pub const DT_ADDRRNGLO: u32 = 1879047680;
123
pub const DT_ADDRRNGHI: u32 = 1879047935;
124
pub const DT_VERSYM: u32 = 1879048176;
125
pub const DT_RELACOUNT: u32 = 1879048185;
126
pub const DT_RELCOUNT: u32 = 1879048186;
127
pub const DT_FLAGS_1: u32 = 1879048187;
128
pub const DT_VERDEF: u32 = 1879048188;
129
pub const DT_VERDEFNUM: u32 = 1879048189;
130
pub const DT_VERNEED: u32 = 1879048190;
131
pub const DT_VERNEEDNUM: u32 = 1879048191;
132
pub const OLD_DT_HIOS: u32 = 1879048191;
133
pub const DT_LOPROC: u32 = 1879048192;
134
pub const DT_HIPROC: u32 = 2147483647;
135
pub const STB_LOCAL: u32 = 0;
136
pub const STB_GLOBAL: u32 = 1;
137
pub const STB_WEAK: u32 = 2;
138
pub const STT_NOTYPE: u32 = 0;
139
pub const STT_OBJECT: u32 = 1;
140
pub const STT_FUNC: u32 = 2;
141
pub const STT_SECTION: u32 = 3;
142
pub const STT_FILE: u32 = 4;
143
pub const STT_COMMON: u32 = 5;
144
pub const STT_TLS: u32 = 6;
145
pub const EI_NIDENT: u32 = 16;
146
pub const PF_R: u32 = 4;
147
pub const PF_W: u32 = 2;
148
pub const PF_X: u32 = 1;
149
pub const SHT_NULL: u32 = 0;
150
pub const SHT_PROGBITS: u32 = 1;
151
pub const SHT_SYMTAB: u32 = 2;
152
pub const SHT_STRTAB: u32 = 3;
153
pub const SHT_RELA: u32 = 4;
154
pub const SHT_HASH: u32 = 5;
155
pub const SHT_DYNAMIC: u32 = 6;
156
pub const SHT_NOTE: u32 = 7;
157
pub const SHT_NOBITS: u32 = 8;
158
pub const SHT_REL: u32 = 9;
159
pub const SHT_SHLIB: u32 = 10;
160
pub const SHT_DYNSYM: u32 = 11;
161
pub const SHT_NUM: u32 = 12;
162
pub const SHT_LOPROC: u32 = 1879048192;
163
pub const SHT_HIPROC: u32 = 2147483647;
164
pub const SHT_LOUSER: u32 = 2147483648;
165
pub const SHT_HIUSER: u32 = 4294967295;
166
pub const SHF_WRITE: u32 = 1;
167
pub const SHF_ALLOC: u32 = 2;
168
pub const SHF_EXECINSTR: u32 = 4;
169
pub const SHF_RELA_LIVEPATCH: u32 = 1048576;
170
pub const SHF_RO_AFTER_INIT: u32 = 2097152;
171
pub const SHF_MASKPROC: u32 = 4026531840;
172
pub const SHN_UNDEF: u32 = 0;
173
pub const SHN_LORESERVE: u32 = 65280;
174
pub const SHN_LOPROC: u32 = 65280;
175
pub const SHN_HIPROC: u32 = 65311;
176
pub const SHN_LIVEPATCH: u32 = 65312;
177
pub const SHN_ABS: u32 = 65521;
178
pub const SHN_COMMON: u32 = 65522;
179
pub const SHN_HIRESERVE: u32 = 65535;
180
pub const EI_MAG0: u32 = 0;
181
pub const EI_MAG1: u32 = 1;
182
pub const EI_MAG2: u32 = 2;
183
pub const EI_MAG3: u32 = 3;
184
pub const EI_CLASS: u32 = 4;
185
pub const EI_DATA: u32 = 5;
186
pub const EI_VERSION: u32 = 6;
187
pub const EI_OSABI: u32 = 7;
188
pub const EI_PAD: u32 = 8;
189
pub const ELFMAG0: u32 = 127;
190
pub const ELFMAG1: u8 = 69u8;
191
pub const ELFMAG2: u8 = 76u8;
192
pub const ELFMAG3: u8 = 70u8;
193
pub const ELFMAG: &[u8; 5] = b"\x7FELF\0";
194
pub const SELFMAG: u32 = 4;
195
pub const ELFCLASSNONE: u32 = 0;
196
pub const ELFCLASS32: u32 = 1;
197
pub const ELFCLASS64: u32 = 2;
198
pub const ELFCLASSNUM: u32 = 3;
199
pub const ELFDATANONE: u32 = 0;
200
pub const ELFDATA2LSB: u32 = 1;
201
pub const ELFDATA2MSB: u32 = 2;
202
pub const EV_NONE: u32 = 0;
203
pub const EV_CURRENT: u32 = 1;
204
pub const EV_NUM: u32 = 2;
205
pub const ELFOSABI_NONE: u32 = 0;
206
pub const ELFOSABI_LINUX: u32 = 3;
207
pub const ELF_OSABI: u32 = 0;
208
pub const NT_PRSTATUS: u32 = 1;
209
pub const NT_PRFPREG: u32 = 2;
210
pub const NT_PRPSINFO: u32 = 3;
211
pub const NT_TASKSTRUCT: u32 = 4;
212
pub const NT_AUXV: u32 = 6;
213
pub const NT_SIGINFO: u32 = 1397311305;
214
pub const NT_FILE: u32 = 1179208773;
215
pub const NT_PRXFPREG: u32 = 1189489535;
216
pub const NT_PPC_VMX: u32 = 256;
217
pub const NT_PPC_SPE: u32 = 257;
218
pub const NT_PPC_VSX: u32 = 258;
219
pub const NT_PPC_TAR: u32 = 259;
220
pub const NT_PPC_PPR: u32 = 260;
221
pub const NT_PPC_DSCR: u32 = 261;
222
pub const NT_PPC_EBB: u32 = 262;
223
pub const NT_PPC_PMU: u32 = 263;
224
pub const NT_PPC_TM_CGPR: u32 = 264;
225
pub const NT_PPC_TM_CFPR: u32 = 265;
226
pub const NT_PPC_TM_CVMX: u32 = 266;
227
pub const NT_PPC_TM_CVSX: u32 = 267;
228
pub const NT_PPC_TM_SPR: u32 = 268;
229
pub const NT_PPC_TM_CTAR: u32 = 269;
230
pub const NT_PPC_TM_CPPR: u32 = 270;
231
pub const NT_PPC_TM_CDSCR: u32 = 271;
232
pub const NT_PPC_PKEY: u32 = 272;
233
pub const NT_PPC_DEXCR: u32 = 273;
234
pub const NT_PPC_HASHKEYR: u32 = 274;
235
pub const NT_386_TLS: u32 = 512;
236
pub const NT_386_IOPERM: u32 = 513;
237
pub const NT_X86_XSTATE: u32 = 514;
238
pub const NT_X86_SHSTK: u32 = 516;
239
pub const NT_X86_XSAVE_LAYOUT: u32 = 517;
240
pub const NT_S390_HIGH_GPRS: u32 = 768;
241
pub const NT_S390_TIMER: u32 = 769;
242
pub const NT_S390_TODCMP: u32 = 770;
243
pub const NT_S390_TODPREG: u32 = 771;
244
pub const NT_S390_CTRS: u32 = 772;
245
pub const NT_S390_PREFIX: u32 = 773;
246
pub const NT_S390_LAST_BREAK: u32 = 774;
247
pub const NT_S390_SYSTEM_CALL: u32 = 775;
248
pub const NT_S390_TDB: u32 = 776;
249
pub const NT_S390_VXRS_LOW: u32 = 777;
250
pub const NT_S390_VXRS_HIGH: u32 = 778;
251
pub const NT_S390_GS_CB: u32 = 779;
252
pub const NT_S390_GS_BC: u32 = 780;
253
pub const NT_S390_RI_CB: u32 = 781;
254
pub const NT_S390_PV_CPU_DATA: u32 = 782;
255
pub const NT_ARM_VFP: u32 = 1024;
256
pub const NT_ARM_TLS: u32 = 1025;
257
pub const NT_ARM_HW_BREAK: u32 = 1026;
258
pub const NT_ARM_HW_WATCH: u32 = 1027;
259
pub const NT_ARM_SYSTEM_CALL: u32 = 1028;
260
pub const NT_ARM_SVE: u32 = 1029;
261
pub const NT_ARM_PAC_MASK: u32 = 1030;
262
pub const NT_ARM_PACA_KEYS: u32 = 1031;
263
pub const NT_ARM_PACG_KEYS: u32 = 1032;
264
pub const NT_ARM_TAGGED_ADDR_CTRL: u32 = 1033;
265
pub const NT_ARM_PAC_ENABLED_KEYS: u32 = 1034;
266
pub const NT_ARM_SSVE: u32 = 1035;
267
pub const NT_ARM_ZA: u32 = 1036;
268
pub const NT_ARM_ZT: u32 = 1037;
269
pub const NT_ARM_FPMR: u32 = 1038;
270
pub const NT_ARM_POE: u32 = 1039;
271
pub const NT_ARC_V2: u32 = 1536;
272
pub const NT_VMCOREDD: u32 = 1792;
273
pub const NT_MIPS_DSP: u32 = 2048;
274
pub const NT_MIPS_FP_MODE: u32 = 2049;
275
pub const NT_MIPS_MSA: u32 = 2050;
276
pub const NT_RISCV_CSR: u32 = 2304;
277
pub const NT_RISCV_VECTOR: u32 = 2305;
278
pub const NT_LOONGARCH_CPUCFG: u32 = 2560;
279
pub const NT_LOONGARCH_CSR: u32 = 2561;
280
pub const NT_LOONGARCH_LSX: u32 = 2562;
281
pub const NT_LOONGARCH_LASX: u32 = 2563;
282
pub const NT_LOONGARCH_LBT: u32 = 2564;
283
pub const NT_LOONGARCH_HW_BREAK: u32 = 2565;
284
pub const NT_LOONGARCH_HW_WATCH: u32 = 2566;
285
pub const NT_GNU_PROPERTY_TYPE_0: u32 = 5;
286
pub const GNU_PROPERTY_AARCH64_FEATURE_1_AND: u32 = 3221225472;
287
pub const GNU_PROPERTY_AARCH64_FEATURE_1_BTI: u32 = 1;
288
pub type Elf32_Addr = u32;
289
pub type Elf32_Half = u16;
290
pub type Elf32_Off = u32;
291
pub type Elf32_Word = u32;
292
pub type Elf64_Addr = u64;
293
pub type Elf64_Half = u16;
294
pub type Elf64_Off = u64;
295
pub type Elf64_Word = u32;
296
pub type Elf64_Xword = u64;
297
#[repr(C)]
298
#[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
299
pub struct elf32_hdr {
300
pub e_ident: [::std::os::raw::c_uchar; 16usize],
301
pub e_type: Elf32_Half,
302
pub e_machine: Elf32_Half,
303
pub e_version: Elf32_Word,
304
pub e_entry: Elf32_Addr,
305
pub e_phoff: Elf32_Off,
306
pub e_shoff: Elf32_Off,
307
pub e_flags: Elf32_Word,
308
pub e_ehsize: Elf32_Half,
309
pub e_phentsize: Elf32_Half,
310
pub e_phnum: Elf32_Half,
311
pub e_shentsize: Elf32_Half,
312
pub e_shnum: Elf32_Half,
313
pub e_shstrndx: Elf32_Half,
314
}
315
pub type Elf32_Ehdr = elf32_hdr;
316
#[repr(C)]
317
#[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
318
pub struct elf64_hdr {
319
pub e_ident: [::std::os::raw::c_uchar; 16usize],
320
pub e_type: Elf64_Half,
321
pub e_machine: Elf64_Half,
322
pub e_version: Elf64_Word,
323
pub e_entry: Elf64_Addr,
324
pub e_phoff: Elf64_Off,
325
pub e_shoff: Elf64_Off,
326
pub e_flags: Elf64_Word,
327
pub e_ehsize: Elf64_Half,
328
pub e_phentsize: Elf64_Half,
329
pub e_phnum: Elf64_Half,
330
pub e_shentsize: Elf64_Half,
331
pub e_shnum: Elf64_Half,
332
pub e_shstrndx: Elf64_Half,
333
}
334
pub type Elf64_Ehdr = elf64_hdr;
335
#[repr(C)]
336
#[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
337
pub struct elf32_phdr {
338
pub p_type: Elf32_Word,
339
pub p_offset: Elf32_Off,
340
pub p_vaddr: Elf32_Addr,
341
pub p_paddr: Elf32_Addr,
342
pub p_filesz: Elf32_Word,
343
pub p_memsz: Elf32_Word,
344
pub p_flags: Elf32_Word,
345
pub p_align: Elf32_Word,
346
}
347
pub type Elf32_Phdr = elf32_phdr;
348
#[repr(C)]
349
#[derive(Debug, Default, Copy, Clone, FromBytes, Immutable, IntoBytes, KnownLayout)]
350
pub struct elf64_phdr {
351
pub p_type: Elf64_Word,
352
pub p_flags: Elf64_Word,
353
pub p_offset: Elf64_Off,
354
pub p_vaddr: Elf64_Addr,
355
pub p_paddr: Elf64_Addr,
356
pub p_filesz: Elf64_Xword,
357
pub p_memsz: Elf64_Xword,
358
pub p_align: Elf64_Xword,
359
}
360
pub type Elf64_Phdr = elf64_phdr;
361
362