From 132d3236bb884433bf94e961f6d32264e0334aec Mon Sep 17 00:00:00 2001 From: ornitorrincos Date: Tue, 18 Aug 2026 12:15:05 +0200 Subject: --- bootloader/ELF.h | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 bootloader/ELF.h (limited to 'bootloader/ELF.h') diff --git a/bootloader/ELF.h b/bootloader/ELF.h new file mode 100644 index 0000000..c379a91 --- /dev/null +++ b/bootloader/ELF.h @@ -0,0 +1,56 @@ +#ifndef ELF_H +#define ELF_H + +#include + +#define ELFMAGIC 0x464C457F + +// Elf header struct +typedef struct ELF +{ + UINT8 e_ident[16]; + UINT16 e_type; + UINT16 e_machine; + UINT32 e_version; + UINT64 e_entry; + UINT64 e_phoff; + UINT64 e_shoff; + UINT32 e_flags; + UINT16 e_ehsize; + UINT16 e_phentsize; + UINT16 e_phnum; + UINT16 e_shentsize; + UINT16 e_shnum; + UINT16 e_shstrndx; +} ELF; + +typedef struct PH +{ + UINT32 p_type; + UINT32 p_flags; + UINT64 p_offset; + UINT64 p_vaddr; + UINT64 p_paddr; + UINT64 p_filesz; + UINT64 p_memsz; + UINT64 p_align; +} PH; + +typedef struct Loaded_PH +{ + UINT64 mem_size; + UINT64 vaddr; + void* data; +} Loaded_PH; + +typedef struct Loaded_ELF +{ + UINT64 ph_num; + UINT64 entry; + Loaded_PH* ph; +} Loaded_ELF; + +void EFIAPI PrintELFInfo(ELF * file); +Loaded_ELF* EFIAPI LoadELF(ELF* file); + +#endif -- cgit v1.2.3-70-g09d2