Skip to content

ELF

struct elf64_ident (7 fields) source
§ uint32_t magic
§ uint8_t class
§ uint8_t data
§ uint8_t version
§ uint8_t os_abi
§ uint8_t abi_version
§ uint8_t pad[7]
struct elf64_ehdr (14 fields) source
§ struct elf64_ident ident
§ uint16_t type
§ uint16_t machine
§ uint32_t version
§ uint64_t entry
§ uint64_t phoff
§ uint64_t shoff
§ uint32_t flags
§ uint16_t ehsize
§ uint16_t phentsize
§ uint16_t phnum
§ uint16_t shentsize
§ uint16_t shnum
§ uint16_t shstrndx
struct elf64_phdr (8 fields) source
§ uint32_t type
§ uint32_t flags
§ uint64_t offset
§ uint64_t vaddr
§ uint64_t paddr
§ uint64_t filesz
§ uint64_t memsz
§ uint64_t align
uint64_t elf_load(const void *elf_data)
source

returns entry point

cc_noreturn void enter_userspace(
    uintptr_t entry_point,
    uintptr_t user_stack_top,
    uint16_t user_cs,
    uint16_t user_ss,
    uintptr_t user_pml4_phys
)
source
void syscall_setup(void *syscall_entry)
source
uintptr_t map_user_stack(uintptr_t user_pml4_phys)
source
void elf_map(uintptr_t user_pml4_phys, void *elf_data)
source
#define PT_LOAD 1
source
#define PF_X 0x1
source
#define PF_W 0x2
source
#define PF_R 0x4
source