1#ifndef __LIBK_EXECUTABLE_ELF_H__
2#define __LIBK_EXECUTABLE_ELF_H__
20#define ELFMAG "\177ELF"
343#define ELF64_R_SYM(i) ((i) >> 32)
344#define ELF64_R_TYPE(i) ((i) & 0xffffffffL)
345#define ELF64_R_INFO(s, t) (((Elf64_Xword)(s) << 32) + (Elf64_Xword)(t))
346#define ELF_PTR(type, base, off) \
347 ((type*)ASSUME_ALIGNED(PTR_ADD((base), (off)), alignof(type)))
madt_record_table_entry_t table[]
void elf_mmap_got(volatile uintptr_t *page, elf_section_map *map, uintptr_t base)
uintptr_t elf_find_base_addr(uint8_t *data)
void elf_section_map_all(uint8_t *data, elf_section_map *map)
uint8_t * elf_dyn_find(Elf64_Dyn *dyn, uint8_t *data, uint64_t tag)
size_t elf_load(volatile uintptr_t *page, uint8_t *data, uintptr_t temporary_base, uintptr_t base, struct elf_load_mmap_table *table)
uintptr_t elf_find_symbol(const char *name, GnuHashHeader *gnuhash, uintptr_t base, elf_section_map *map, uint8_t *data)
void elf_gnu_hash_parse(GnuHashHeader *gnu_hash, Elf64_Shdr *gnu_hash_sym, uint8_t *data)
void elf_call_init_array(elf_section_map *map, uintptr_t base)
void elf_dyn_map_all(Elf64_Dyn *dyn, uint8_t *data, elf_dynamic_map *map)
uintptr_t elf_get_entry(uint8_t *data, uintptr_t base)
Elf64_Sym * elf_gnu_lookup(const char *name, GnuHashHeader *gh, Elf64_Sym *symtab, const char *strtab)
Elf64_Dyn * elf_get_phdr_dynamic(uint8_t *data)
void elf_call_init_array_with_table(elf_section_map *map, struct elf_load_mmap_table *table, int table_count)
void elf_relocate_dyn(elf_dynamic_map *map, uintptr_t kernel_base, uintptr_t user_base, GnuHashHeader *gnu_hash, symbols_ptr_vector_t *external_syms, struct elf_load_mmap_table *table, int table_count)
uint64_t elf_pflags_to_page_flags(uint64_t p_flags)
@ R_X86_64_GOTPC32_TLSDESC
void elf_get_symbol(const char *sym_name, uintptr_t base, elf_section_map *map, uint8_t *data, symbols_ptr_vector_t *syms, boolean_t skip_empty_val)
uintptr_t elf_count_load_size(uint8_t *data)
elf_section_map uintptr_t base
union Elf64_Dyn::@220367214354326365050217232242036207207371044375 d_un
struct vector_uint64_t needed
struct vector_symbols_ptr symbols_ptr_vector_t