1pub const PT_LOAD: u32 = 1;
23pub const PT_NOTE: u32 = 4;
24
25pub const EI_MAG0: u32 = 0;
26pub const EI_MAG1: u32 = 1;
27pub const EI_MAG2: u32 = 2;
28pub const EI_MAG3: u32 = 3;
29pub const EI_DATA: u32 = 5;
30
31pub const ELFMAG0: u32 = 127;
32
33pub const ELFMAG1: u8 = b'E';
36pub const ELFMAG2: u8 = b'L';
37pub const ELFMAG3: u8 = b'F';
38
39pub const ELFDATA2LSB: u32 = 1;
40
41pub type __s8 = ::std::os::raw::c_schar;
42pub type __u8 = ::std::os::raw::c_uchar;
43pub type __s16 = ::std::os::raw::c_short;
44pub type __u16 = ::std::os::raw::c_ushort;
45pub type __s32 = ::std::os::raw::c_int;
46pub type __u32 = ::std::os::raw::c_uint;
47pub type __s64 = ::std::os::raw::c_longlong;
48pub type __u64 = ::std::os::raw::c_ulonglong;
49
50pub type Elf64_Addr = __u64;
51pub type Elf64_Half = __u16;
52pub type Elf64_Off = __u64;
53pub type Elf64_Sword = __s32;
54pub type Elf64_Word = __u32;
55pub type Elf64_Xword = __u64;
56
57#[repr(C)]
58#[derive(Debug, Default, Copy, Clone)]
59pub struct elf64_hdr {
60 pub e_ident: [::std::os::raw::c_uchar; 16usize],
61 pub e_type: Elf64_Half,
62 pub e_machine: Elf64_Half,
63 pub e_version: Elf64_Word,
64 pub e_entry: Elf64_Addr,
65 pub e_phoff: Elf64_Off,
66 pub e_shoff: Elf64_Off,
67 pub e_flags: Elf64_Word,
68 pub e_ehsize: Elf64_Half,
69 pub e_phentsize: Elf64_Half,
70 pub e_phnum: Elf64_Half,
71 pub e_shentsize: Elf64_Half,
72 pub e_shnum: Elf64_Half,
73 pub e_shstrndx: Elf64_Half,
74}
75pub type Elf64_Ehdr = elf64_hdr;
76
77#[repr(C)]
78#[derive(Debug, Default, Copy, Clone)]
79pub struct elf64_phdr {
80 pub p_type: Elf64_Word,
81 pub p_flags: Elf64_Word,
82 pub p_offset: Elf64_Off,
83 pub p_vaddr: Elf64_Addr,
84 pub p_paddr: Elf64_Addr,
85 pub p_filesz: Elf64_Xword,
86 pub p_memsz: Elf64_Xword,
87 pub p_align: Elf64_Xword,
88}
89pub type Elf64_Phdr = elf64_phdr;
90
91#[repr(C)]
92#[derive(Debug, Default, Copy, Clone)]
93pub struct elf64_note {
94 pub n_namesz: Elf64_Word,
95 pub n_descsz: Elf64_Word,
96 pub n_type: Elf64_Word,
97}
98pub type Elf64_Nhdr = elf64_note;
99
100#[cfg(test)]
101mod tests {
102 use super::*;
103
104 #[test]
105 fn bindgen_test_layout_elf64_hdr() {
106 const UNINIT: ::std::mem::MaybeUninit<elf64_hdr> = ::std::mem::MaybeUninit::uninit();
107 let ptr = UNINIT.as_ptr();
108 assert_eq!(
109 ::std::mem::size_of::<elf64_hdr>(),
110 64usize,
111 concat!("Size of: ", stringify!(elf64_hdr))
112 );
113 assert_eq!(
114 ::std::mem::align_of::<elf64_hdr>(),
115 8usize,
116 concat!("Alignment of ", stringify!(elf64_hdr))
117 );
118 assert_eq!(
119 unsafe { ::std::ptr::addr_of!((*ptr).e_ident) as usize - ptr as usize },
120 0usize,
121 concat!(
122 "Offset of field: ",
123 stringify!(elf64_hdr),
124 "::",
125 stringify!(e_ident)
126 )
127 );
128 assert_eq!(
129 unsafe { ::std::ptr::addr_of!((*ptr).e_type) as usize - ptr as usize },
130 16usize,
131 concat!(
132 "Offset of field: ",
133 stringify!(elf64_hdr),
134 "::",
135 stringify!(e_type)
136 )
137 );
138 assert_eq!(
139 unsafe { ::std::ptr::addr_of!((*ptr).e_machine) as usize - ptr as usize },
140 18usize,
141 concat!(
142 "Offset of field: ",
143 stringify!(elf64_hdr),
144 "::",
145 stringify!(e_machine)
146 )
147 );
148 assert_eq!(
149 unsafe { ::std::ptr::addr_of!((*ptr).e_version) as usize - ptr as usize },
150 20usize,
151 concat!(
152 "Offset of field: ",
153 stringify!(elf64_hdr),
154 "::",
155 stringify!(e_version)
156 )
157 );
158 assert_eq!(
159 unsafe { ::std::ptr::addr_of!((*ptr).e_entry) as usize - ptr as usize },
160 24usize,
161 concat!(
162 "Offset of field: ",
163 stringify!(elf64_hdr),
164 "::",
165 stringify!(e_entry)
166 )
167 );
168 assert_eq!(
169 unsafe { ::std::ptr::addr_of!((*ptr).e_phoff) as usize - ptr as usize },
170 32usize,
171 concat!(
172 "Offset of field: ",
173 stringify!(elf64_hdr),
174 "::",
175 stringify!(e_phoff)
176 )
177 );
178 assert_eq!(
179 unsafe { ::std::ptr::addr_of!((*ptr).e_shoff) as usize - ptr as usize },
180 40usize,
181 concat!(
182 "Offset of field: ",
183 stringify!(elf64_hdr),
184 "::",
185 stringify!(e_shoff)
186 )
187 );
188 assert_eq!(
189 unsafe { ::std::ptr::addr_of!((*ptr).e_flags) as usize - ptr as usize },
190 48usize,
191 concat!(
192 "Offset of field: ",
193 stringify!(elf64_hdr),
194 "::",
195 stringify!(e_flags)
196 )
197 );
198 assert_eq!(
199 unsafe { ::std::ptr::addr_of!((*ptr).e_ehsize) as usize - ptr as usize },
200 52usize,
201 concat!(
202 "Offset of field: ",
203 stringify!(elf64_hdr),
204 "::",
205 stringify!(e_ehsize)
206 )
207 );
208 assert_eq!(
209 unsafe { ::std::ptr::addr_of!((*ptr).e_phentsize) as usize - ptr as usize },
210 54usize,
211 concat!(
212 "Offset of field: ",
213 stringify!(elf64_hdr),
214 "::",
215 stringify!(e_phentsize)
216 )
217 );
218 assert_eq!(
219 unsafe { ::std::ptr::addr_of!((*ptr).e_phnum) as usize - ptr as usize },
220 56usize,
221 concat!(
222 "Offset of field: ",
223 stringify!(elf64_hdr),
224 "::",
225 stringify!(e_phnum)
226 )
227 );
228 assert_eq!(
229 unsafe { ::std::ptr::addr_of!((*ptr).e_shentsize) as usize - ptr as usize },
230 58usize,
231 concat!(
232 "Offset of field: ",
233 stringify!(elf64_hdr),
234 "::",
235 stringify!(e_shentsize)
236 )
237 );
238 assert_eq!(
239 unsafe { ::std::ptr::addr_of!((*ptr).e_shnum) as usize - ptr as usize },
240 60usize,
241 concat!(
242 "Offset of field: ",
243 stringify!(elf64_hdr),
244 "::",
245 stringify!(e_shnum)
246 )
247 );
248 assert_eq!(
249 unsafe { ::std::ptr::addr_of!((*ptr).e_shstrndx) as usize - ptr as usize },
250 62usize,
251 concat!(
252 "Offset of field: ",
253 stringify!(elf64_hdr),
254 "::",
255 stringify!(e_shstrndx)
256 )
257 );
258 }
259
260 #[test]
261 fn bindgen_test_layout_elf64_phdr() {
262 const UNINIT: ::std::mem::MaybeUninit<elf64_phdr> = ::std::mem::MaybeUninit::uninit();
263 let ptr = UNINIT.as_ptr();
264 assert_eq!(
265 ::std::mem::size_of::<elf64_phdr>(),
266 56usize,
267 concat!("Size of: ", stringify!(elf64_phdr))
268 );
269 assert_eq!(
270 ::std::mem::align_of::<elf64_phdr>(),
271 8usize,
272 concat!("Alignment of ", stringify!(elf64_phdr))
273 );
274 assert_eq!(
275 unsafe { ::std::ptr::addr_of!((*ptr).p_type) as usize - ptr as usize },
276 0usize,
277 concat!(
278 "Offset of field: ",
279 stringify!(elf64_phdr),
280 "::",
281 stringify!(p_type)
282 )
283 );
284 assert_eq!(
285 unsafe { ::std::ptr::addr_of!((*ptr).p_flags) as usize - ptr as usize },
286 4usize,
287 concat!(
288 "Offset of field: ",
289 stringify!(elf64_phdr),
290 "::",
291 stringify!(p_flags)
292 )
293 );
294 assert_eq!(
295 unsafe { ::std::ptr::addr_of!((*ptr).p_offset) as usize - ptr as usize },
296 8usize,
297 concat!(
298 "Offset of field: ",
299 stringify!(elf64_phdr),
300 "::",
301 stringify!(p_offset)
302 )
303 );
304 assert_eq!(
305 unsafe { ::std::ptr::addr_of!((*ptr).p_vaddr) as usize - ptr as usize },
306 16usize,
307 concat!(
308 "Offset of field: ",
309 stringify!(elf64_phdr),
310 "::",
311 stringify!(p_vaddr)
312 )
313 );
314 assert_eq!(
315 unsafe { ::std::ptr::addr_of!((*ptr).p_paddr) as usize - ptr as usize },
316 24usize,
317 concat!(
318 "Offset of field: ",
319 stringify!(elf64_phdr),
320 "::",
321 stringify!(p_paddr)
322 )
323 );
324 assert_eq!(
325 unsafe { ::std::ptr::addr_of!((*ptr).p_filesz) as usize - ptr as usize },
326 32usize,
327 concat!(
328 "Offset of field: ",
329 stringify!(elf64_phdr),
330 "::",
331 stringify!(p_filesz)
332 )
333 );
334 assert_eq!(
335 unsafe { ::std::ptr::addr_of!((*ptr).p_memsz) as usize - ptr as usize },
336 40usize,
337 concat!(
338 "Offset of field: ",
339 stringify!(elf64_phdr),
340 "::",
341 stringify!(p_memsz)
342 )
343 );
344 assert_eq!(
345 unsafe { ::std::ptr::addr_of!((*ptr).p_align) as usize - ptr as usize },
346 48usize,
347 concat!(
348 "Offset of field: ",
349 stringify!(elf64_phdr),
350 "::",
351 stringify!(p_align)
352 )
353 );
354 }
355
356 #[test]
357 fn bindgen_test_layout_elf64_note() {
358 const UNINIT: ::std::mem::MaybeUninit<elf64_note> = ::std::mem::MaybeUninit::uninit();
359 let ptr = UNINIT.as_ptr();
360 assert_eq!(
361 ::std::mem::size_of::<elf64_note>(),
362 12usize,
363 concat!("Size of: ", stringify!(elf64_note))
364 );
365 assert_eq!(
366 ::std::mem::align_of::<elf64_note>(),
367 4usize,
368 concat!("Alignment of ", stringify!(elf64_note))
369 );
370 assert_eq!(
371 unsafe { ::std::ptr::addr_of!((*ptr).n_namesz) as usize - ptr as usize },
372 0usize,
373 concat!(
374 "Offset of field: ",
375 stringify!(elf64_note),
376 "::",
377 stringify!(n_namesz)
378 )
379 );
380 assert_eq!(
381 unsafe { ::std::ptr::addr_of!((*ptr).n_descsz) as usize - ptr as usize },
382 4usize,
383 concat!(
384 "Offset of field: ",
385 stringify!(elf64_note),
386 "::",
387 stringify!(n_descsz)
388 )
389 );
390 assert_eq!(
391 unsafe { ::std::ptr::addr_of!((*ptr).n_type) as usize - ptr as usize },
392 8usize,
393 concat!(
394 "Offset of field: ",
395 stringify!(elf64_note),
396 "::",
397 stringify!(n_type)
398 )
399 );
400 }
401}