diff options
-rw-r--r-- | spec/elf.fspec | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/spec/elf.fspec b/spec/elf.fspec new file mode 100644 index 0000000..d107f85 --- /dev/null +++ b/spec/elf.fspec @@ -0,0 +1,26 @@ +struct elf64 { + e_entry: u64; + 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; +}; |