jupnet_rbpf/elf_parser/
types.rs

1#![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}