diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/elf.h | 68 | ||||
| -rw-r--r-- | include/types.h | 1 |
2 files changed, 52 insertions, 17 deletions
diff --git a/include/elf.h b/include/elf.h index ad8c550..76c384d 100644 --- a/include/elf.h +++ b/include/elf.h @@ -4,31 +4,52 @@ #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 +#define ELFDATA2LSB 1 +#define ELFDATA2MSB 2 + +#define ELFCLASS32 1 +#define ELFCLASS64 2 + +#define EV_CURRENT 1 + +#ifdef __SYS_LITTLE_ENDIAN__ + #define ELFHOSTDATA ELFDATA2LSB +#else + #define ELFHOSTDATA ELFDATA2MSB +#endif + +#ifdef __SYS_64_BIT__ + #define ELFHOSTCLASS ELFCLASS64 +#else + #define ELFHOSTCLASS ELFCLASS32 +#endif + 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; + + uint16_t e_type; + uint16_t e_machine; + uint32_t e_version; + + uint32_t e_entry; + uint32_t e_phoff; + uint32_t e_shoff; + + uint32_t e_flags; + + uint16_t e_ehsize; + uint16_t e_phentsize; + uint16_t e_phnum; + + uint16_t e_shentsize; + uint16_t e_shnum; + uint16_t e_shstrndx; }; struct elf_section_header { @@ -44,4 +65,17 @@ struct elf_section_header { uint32_t sh_entsize; }; +struct elf_program_header { + uint32_t p_type; + uint32_t p_offset; + uint32_t p_vaddr; + uint32_t p_paddr; + uint32_t p_filesz; + uint32_t p_memsz; + uint32_t p_flags; + uint32_t p_align; +}; + int elf_chk_header(struct elf_header *header); +struct elf_section_header *elf_get_section(struct elf_header *hdr, void *data, uint32_t index); +char *elf_get_section_name(struct elf_header *hdr, struct elf_section_header *section, void *data); diff --git a/include/types.h b/include/types.h index 821e108..5be3023 100644 --- a/include/types.h +++ b/include/types.h @@ -2,6 +2,7 @@ #define NULL (void*)0 +#define uintptr_t __wk_size_t #define size_t __wk_size_t #define uint8_t __wk_uint8_t #define uint16_t __wk_uint16_t |
