summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--spec/elf.fspec26
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;
+};