summaryrefslogtreecommitdiff
path: root/include/elf.h
diff options
context:
space:
mode:
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);