summaryrefslogtreecommitdiff
path: root/include/elf.h
diff options
context:
space:
mode:
authorNathan Lee <me@nwlee.tech>2026-07-12 12:42:31 -0500
committerNathan Lee <me@nwlee.tech>2026-07-12 12:45:05 -0500
commit24fdac29fb8a1c7766869b05e7a17b2c4cc98ce1 (patch)
tree6fddf53527e7ab52e089b620bcdbcba5fa67daa3 /include/elf.h
parent5d9942d70ca61af4d12cd2a531a190c98052c9c4 (diff)
create elf.h
The ELF parser needs more work, there are more structs to be added. memcpy was refactored from mem.h into common.h endianness conversions were standardized in types.h
Diffstat (limited to 'include/elf.h')
-rw-r--r--include/elf.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/include/elf.h b/include/elf.h
new file mode 100644
index 0000000..ad8c550
--- /dev/null
+++ b/include/elf.h
@@ -0,0 +1,47 @@
+#pragma once
+#include <types.h>
+
+#define ELF_MAGIC_LE 0x464C457F
+#define ELF_PAD 0
+
+#define EI_MAG0 0
+#define EI_MAG1 1
+#define EI_MAG2 2
+#define EI_MAG3 3
+#define EI_CLASS 4
+#define EI_DATA 5
+#define EI_VERSION 6
+#define EI_OSABI 7
+#define EI_ABI_VERSION 8
+
+struct elf_header {
+ uint8_t e_ident[16];
+ uint8_t e_type;
+ uint8_t e_machine;
+ uint8_t e_version;
+ uint8_t e_entry;
+ uint8_t e_phoff;
+ uint8_t e_shoff;
+ uint8_t e_flags;
+ uint8_t e_ehsize;
+ uint8_t e_phentsize;
+ uint8_t e_phnum;
+ uint8_t e_shentsize;
+ uint8_t e_shnum;
+ uint8_t e_shstrndx;
+};
+
+struct elf_section_header {
+ uint32_t sh_name;
+ uint32_t sh_type;
+ uint32_t sh_flags;
+ uint32_t sh_addr;
+ uint32_t sh_offset;
+ uint32_t sh_size;
+ uint32_t sh_link;
+ uint32_t sh_info;
+ uint32_t sh_addralign;
+ uint32_t sh_entsize;
+};
+
+int elf_chk_header(struct elf_header *header);