fixed address loading

This commit is contained in:
georgemoralis 2024-01-01 16:58:30 +02:00
parent 6c724a8941
commit a28f68708c

View File

@ -15,6 +15,7 @@ namespace Core {
constexpr bool debug_loader = true;
static u64 g_load_addr = SYSTEM_RESERVED + CODE_BASE_OFFSET;
constexpr u64 CODE_BASE_INCR = 0x010000000u;
static u64 get_aligned_size(const elf_program_header& phdr) {
return (phdr.p_align != 0 ? (phdr.p_memsz + (phdr.p_align - 1)) & ~(phdr.p_align - 1) : phdr.p_memsz);
@ -90,6 +91,8 @@ void Linker::LoadModuleToMemory(Module* m) {
LOG_INFO_IF(debug_loader, "base_size ..............: {:#018x}\n", base_size);
LOG_INFO_IF(debug_loader, "aligned_base_size ......: {:#018x}\n", m->aligned_base_size);
g_load_addr += CODE_BASE_INCR * (1 + m->aligned_base_size / CODE_BASE_INCR);
for (u16 i = 0; i < elf_header.e_phnum; i++) {
switch (elf_pheader[i].p_type) {
case PT_LOAD: