1use zerocopy::FromBytes;
7use zerocopy::Immutable;
8use zerocopy::IntoBytes;
9use zerocopy::KnownLayout;
10
11#[derive(IntoBytes, Immutable, KnownLayout, FromBytes, Debug)]
13#[repr(C)]
14pub struct Elf64_Ehdr {
15 pub e_ident: [u8; 16],
16 pub e_type: u16,
17 pub e_machine: u16,
18 pub e_version: u32,
19 pub e_entry: u64,
20 pub e_phoff: u64,
21 pub e_shoff: u64,
22 pub e_flags: u32,
23 pub e_ehsize: u16,
24 pub e_phentsize: u16,
25 pub e_phnum: u16,
26 pub e_shentsize: u16,
27 pub e_shnum: u16,
28 pub e_shstrndx: u16,
29}
30
31#[derive(IntoBytes, Immutable, KnownLayout, FromBytes, Copy, Clone, Debug)]
33#[repr(C)]
34pub struct Elf64_Phdr {
35 pub p_type: u32,
36 pub p_flags: u32,
37 pub p_offset: u64,
38 pub p_vaddr: u64,
39 pub p_paddr: u64,
40 pub p_filesz: u64,
41 pub p_memsz: u64,
42 pub p_align: u64,
43}
44
45#[derive(IntoBytes, Immutable, KnownLayout)]
47#[repr(C)]
48pub struct Elf64_Nhdr {
49 pub namesz: u32,
50 pub descsz: u32,
51 pub ntype: u32,
52}
53
54pub const PT_NOTE: u32 = 4;