From ace65b453151845bc361f21f3e5b651c35f9f126 Mon Sep 17 00:00:00 2001 From: Jon Santmyer Date: Wed, 22 May 2024 13:00:41 -0400 Subject: massive refactor for mp and organization --- include/arch/x86_64/elf.h | 93 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 include/arch/x86_64/elf.h (limited to 'include/arch/x86_64/elf.h') diff --git a/include/arch/x86_64/elf.h b/include/arch/x86_64/elf.h new file mode 100644 index 0000000..1aaf116 --- /dev/null +++ b/include/arch/x86_64/elf.h @@ -0,0 +1,93 @@ +#ifndef _JOVE_x86_64_ELF_H +#define _JOVE_x86_64_ELF_H 1 + +#include + +#define EI_MAG0 0x7F +#define EI_MAG1 'E' +#define EI_MAG2 'L' +#define EI_MAG3 'F' + +#define EI_CLASS_32 1 +#define EI_CLASS_64 2 + +#define EI_DATA_LE 1 +#define EI_DATA_BE 2 + +#define EI_VERSION_CURRENT 1 + +#define ET_NONE 0 +#define ET_REL 1 +#define ET_EXEC 2 +#define ET_DYN 3 + +typedef struct elf64_file_header +{ + union { + struct { + uint8_t ei_mag[4]; + uint8_t ei_class; + uint8_t ei_data; + uint8_t ei_version; + uint8_t ei_osabi; + uint8_t ei_abiver; + uint8_t ei_pad[7]; + }; + uint8_t e_ident[16]; + }; + uint16_t e_type; + uint16_t e_machine; + uint32_t e_version; + uint64_t e_entry; + uint64_t e_phoff; + uint64_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; +} elf_header_t; + +#define PT_NULL 0 +#define PT_LOAD 1 +#define PT_DYNAMIC 2 +#define PT_INTERP 3 +#define PT_NOTE 4 +#define PT_SHLIB 5 +#define PT_PHDR 6 +#define PT_TLS 7 + +#define PF_X 1 +#define PF_W 2 +#define PF_R 4 + +typedef struct elf64_program_header +{ + uint32_t p_type; + uint32_t p_flags; + uint64_t p_offset; + uint64_t p_vaddr; + uint64_t p_paddr; + uint64_t p_filesz; + uint64_t p_memsz; + uint64_t p_align; +} elf_phdr_t; + +#define SHT_NULL 0 +#define SHT_PROGBITS 1 + +typedef struct elf64_section_header +{ + uint32_t sh_name; + uint32_t sh_type; + uint64_t sh_flags; + uint64_t sh_addr; + uint64_t sh_offset; + uint64_t sh_size; + uint64_t sh_addralign; + uint64_t sh_entsize; +} elf_shdr_t; + +#endif -- cgit v1.2.1