From a28f68708c891898303c9a9ed4b7a86809b7e2cd Mon Sep 17 00:00:00 2001 From: georgemoralis Date: Mon, 1 Jan 2024 16:58:30 +0200 Subject: [PATCH] fixed address loading --- src/core/linker.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/core/linker.cpp b/src/core/linker.cpp index 0342af5d6..469a0ac58 100644 --- a/src/core/linker.cpp +++ b/src/core/linker.cpp @@ -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: