jupnet_rbpf/elf_parser/
types.rs1#![allow(missing_docs)]
2
3pub type Elf64Half = u16;
4pub type Elf64Word = u32;
5pub type Elf64Xword = u64;
6pub type Elf64Addr = u64;
7pub type Elf64Off = u64;
8pub type Elf64Section = u16;
9
10#[derive(Debug, Clone)]
11#[repr(C)]
12pub struct ElfIdent {
13 pub ei_mag: [u8; 4],
14 pub ei_class: u8,
15 pub ei_data: u8,
16 pub ei_version: u8,
17 pub ei_osabi: u8,
18 pub ei_abiversion: u8,
19 pub ei_pad: [u8; 7],
20}
21
22#[derive(Debug, Clone)]
23#[repr(C)]
24pub struct Elf64Ehdr {
25 pub e_ident: ElfIdent,
26 pub e_type: Elf64Half,
27 pub e_machine: Elf64Half,
28 pub e_version: Elf64Word,
29 pub e_entry: Elf64Addr,
30 pub e_phoff: Elf64Off,
31 pub e_shoff: Elf64Off,
32 pub e_flags: Elf64Word,
33 pub e_ehsize: Elf64Half,
34 pub e_phentsize: Elf64Half,
35 pub e_phnum: Elf64Half,
36 pub e_shentsize: Elf64Half,
37 pub e_shnum: Elf64Half,
38 pub e_shstrndx: Elf64Half,
39}
40
41#[derive(Debug, Clone)]
42#[repr(C)]
43pub struct Elf64Phdr {
44 pub p_type: Elf64Word,
45 pub p_flags: Elf64Word,
46 pub p_offset: Elf64Off,
47 pub p_vaddr: Elf64Addr,
48 pub p_paddr: Elf64Addr,
49 pub p_filesz: Elf64Xword,
50 pub p_memsz: Elf64Xword,
51 pub p_align: Elf64Xword,
52}
53
54#[derive(Debug, Clone)]
55#[repr(C)]
56pub struct Elf64Shdr {
57 pub sh_name: Elf64Word,
58 pub sh_type: Elf64Word,
59 pub sh_flags: Elf64Xword,
60 pub sh_addr: Elf64Addr,
61 pub sh_offset: Elf64Off,
62 pub sh_size: Elf64Xword,
63 pub sh_link: Elf64Word,
64 pub sh_info: Elf64Word,
65 pub sh_addralign: Elf64Xword,
66 pub sh_entsize: Elf64Xword,
67}
68
69#[derive(Debug, Clone)]
70#[repr(C)]
71pub struct Elf64Sym {
72 pub st_name: Elf64Word,
73 pub st_info: u8,
74 pub st_other: u8,
75 pub st_shndx: Elf64Section,
76 pub st_value: Elf64Addr,
77 pub st_size: Elf64Xword,
78}
79
80#[derive(Debug, Clone)]
81#[repr(C)]
82pub struct Elf64Dyn {
83 pub d_tag: Elf64Xword,
84 pub d_val: Elf64Xword,
85}
86
87#[derive(Debug, Clone)]
88#[repr(C)]
89pub struct Elf64Rel {
90 pub r_offset: Elf64Addr,
91 pub r_info: Elf64Xword,
92}