summaryrefslogtreecommitdiff
path: root/spec/elf.fspec
blob: e9f3f3be2a254e42d64b816ee38f1c88b2641b9d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
struct elf64 {
   e_entry: u64 hex;
   e_phoff: u64;
   e_shoff: u64;
};

struct elf {
   ei_magic: u8[4] | matches('\x7fELF') str;
   ei_class: u8 hex; // word size
   ei_data: u8 hex; // endianess
   ei_version: u8;
   ei_osabi: u8;
   ei_abi_version: u8;
   padding: u8[7] nul;
   e_type: u16 hex;
   e_machine: u16 hex;
   e_version: u32;
   elf64: struct elf64; // fspec needs union to parse ei_class != 2 type
   e_flags: u32 hex;
   e_ehsz: u16;
   e_phentsize: u16;
   e_phnum: u16;
   e_shentsize: u16;
   e_shnum: u16;
   e_shstrndx: u16;
};