diff options
Diffstat (limited to 'make/stub_includes/os/elf_header.h')
-rw-r--r-- | make/stub_includes/os/elf_header.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/make/stub_includes/os/elf_header.h b/make/stub_includes/os/elf_header.h new file mode 100644 index 0000000..7d608f0 --- /dev/null +++ b/make/stub_includes/os/elf_header.h @@ -0,0 +1,60 @@ + +#include <gluegen_stddef.h> +#include <gluegen_stdint.h> + +// #define EI_NIDENT 16 + +// #define ElfN_Addr uintptr_t +// #define ElfN_Off size_t +typedef uintptr_t ElfN_Addr; +typedef size_t ElfN_Off; +typedef size_t ElfN_size; + +typedef struct { + unsigned char e_ident[16]; + uint16_t e_type; + uint16_t e_machine; + uint32_t e_version; + ElfN_Addr e_entry; + ElfN_Off e_phoff; + ElfN_Off 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; +} Ehdr; + +typedef struct { + uint32_t sh_name; + uint32_t sh_type; + ElfN_size sh_flags; + ElfN_Addr sh_addr; + ElfN_Off sh_offset; + ElfN_size sh_size; + uint32_t sh_link; + uint32_t sh_info; + ElfN_size sh_addralign; + ElfN_size sh_entsize; +} Shdr; + +typedef struct { + uint32_t st_name; + ElfN_Addr st_value; + ElfN_size st_size; + uint8_t st_info; + uint8_t st_other; + uint16_t st_shndx; +} Sym32; + +typedef struct { + uint32_t st_name; + uint8_t st_info; + uint8_t st_other; + uint16_t st_shndx; + ElfN_Addr st_value; + ElfN_size st_size; +} Sym64; + |