LF OS
Hobby operating system for amd64 with high ambitions
Loading...
Searching...
No Matches
elf.h
Go to the documentation of this file.
1#ifndef _ELF_H_INCLUDED
2#define _ELF_H_INCLUDED
4#include "stdint.h"
5#include "vm.h"
6#include "allocator.h"
8#define ELF_MAGIC 0x464c457f
21
24
30
33
36
40}__attribute__((packed));
42
57
72
82typedef struct elf_symbol elf_symbol_t;
83
93ptr_t load_elf(ptr_t elf, struct vm_table* context, ptr_t* data_start, ptr_t* data_end);
94
102elf_section_header_t* elf_section_by_name(const char* name, const void* elf);
103
113
129bool elf_symbolize(void* symbols, ptr_t addr, size_t* symbol_length, char* symbol);
130
131#endif
unsigned short uint16_t
Definition arch.h:8
uint64_t ptr_t
Definition arch.h:17
unsigned int uint32_t
Definition arch.h:11
unsigned long uint64_t
Definition arch.h:14
unsigned char uint8_t
Definition arch.h:5
uint32_t info
Definition elf.h:67
uint16_t sectionHeaderSectionNameIndex
Definition elf.h:39
uint8_t info
Definition elf.h:76
uint64_t paddr
Definition elf.h:50
ptr_t addr
Definition elf.h:3
uint64_t align
Definition elf.h:54
uint64_t entrySize
Definition elf.h:69
uint32_t name
Definition elf.h:60
uint32_t link
Definition elf.h:66
uint8_t _ident_padding[7]
Definition elf.h:20
uint64_t offset
Definition elf.h:64
uint64_t size
Definition elf.h:65
uint64_t flags
Definition elf.h:62
uint8_t ident_version
Definition elf.h:15
ptr_t programHeaderOffset
Definition elf.h:28
uint64_t addr
Definition elf.h:79
uint16_t type
Definition elf.h:22
ptr_t entrypoint
Definition elf.h:27
uint64_t addralign
Definition elf.h:68
uint32_t name
Definition elf.h:0
uint32_t ident_magic
Definition elf.h:12
uint16_t headerSize
Definition elf.h:32
uint32_t flags
Definition elf.h:46
uint8_t ident_abi_version
Definition elf.h:18
uint8_t ident_byteOrder
Definition elf.h:14
uint16_t sectionHeader
Definition elf.h:78
uint16_t sectionHeaderEntrySize
Definition elf.h:37
elf_section_header_t * elf_section_by_name(const char *name, const void *elf)
Definition elf.c:71
uint16_t programHeaderEntrySize
Definition elf.h:34
uint32_t flags
Definition elf.h:31
uint16_t sectionHeaderCount
Definition elf.h:38
ptr_t sectionHeaderOffset
Definition elf.h:29
uint8_t other
Definition elf.h:77
uint8_t ident_arch
Definition elf.h:13
uint32_t type
Definition elf.h:61
uint32_t name
Definition elf.h:75
uint16_t programHeaderCount
Definition elf.h:35
uint64_t memLength
Definition elf.h:52
bool elf_symbolize(void *symbols, ptr_t addr, size_t *symbol_length, char *symbol)
Definition elf.c:133
uint8_t ident_abi
Definition elf.h:17
uint64_t vaddr
Definition elf.h:49
uint32_t type
Definition elf.h:45
void * elf_load_symbols(ptr_t elf, allocator_t *alloc)
Definition elf.c:101
uint32_t version
Definition elf.h:25
ptr_t load_elf(ptr_t elf, struct vm_table *context, ptr_t *data_start, ptr_t *data_end)
Definition elf.c:7
uint64_t size
Definition elf.h:80
uint64_t fileLength
Definition elf.h:51
uint16_t machine
Definition elf.h:23
uint64_t offset
Definition elf.h:48
Header of ELF images.
Definition elf.h:11
Program headers in ELF images, required for preparing a program for execution.
Definition elf.h:44
Section headers in ELF images, required to read additional information from file.
Definition elf.h:59
Symbols in ELF images, there may be many.
Definition elf.h:74
allocator_t * alloc
static void ** data_end
Definition syscalls.h:82
A paging table, when this is a PML4 it may also be called context.
Definition vm.c:42