1010#include " common/string_util.h"
1111#include " core/aerolib/aerolib.h"
1212#include " core/cpu_patches.h"
13+ #include " core/libraries/error_codes.h"
1314#include " core/loader/dwarf.h"
1415#include " core/memory.h"
1516#include " core/module.h"
@@ -112,17 +113,20 @@ void Module::LoadModuleToMemory(u32& max_tls_index) {
112113
113114 // Reserve memory area for module
114115 void ** out_addr = reinterpret_cast <void **>(&base_virtual_addr);
115- memory->MapMemory (out_addr, ModuleLoadBase, aligned_base_size + TrampolineSize,
116- MemoryProt::NoAccess, MemoryMapFlags::NoFlags, VMAType::Reserved, name);
116+ s32 result =
117+ memory->MapMemory (out_addr, ModuleLoadBase, aligned_base_size + TrampolineSize,
118+ MemoryProt::NoAccess, MemoryMapFlags::NoFlags, VMAType::Reserved, name);
119+ ASSERT_MSG (result == ORBIS_OK, " Failed to reserve memory for module {}" , name);
117120 LOG_INFO (Core_Linker, " Loading module {} to {}" , name, fmt::ptr (*out_addr));
118121
119122#ifdef ARCH_X86_64
120123 // Initialize trampoline generator.
121124 VAddr trampoline_vaddr = base_virtual_addr + aligned_base_size;
122125 void * trampoline_addr = std::bit_cast<void *>(trampoline_vaddr);
123- memory->MapMemory (&trampoline_addr, trampoline_vaddr, TrampolineSize,
124- MemoryProt::CpuReadWrite | MemoryProt::CpuExec, MemoryMapFlags::Fixed,
125- VMAType::Code, name);
126+ result = memory->MapMemory (&trampoline_addr, trampoline_vaddr, TrampolineSize,
127+ MemoryProt::CpuReadWrite | MemoryProt::CpuExec,
128+ MemoryMapFlags::Fixed, VMAType::Code, name);
129+ ASSERT_MSG (result == ORBIS_OK, " Failed to map trampoline area for module {}" , name);
126130 RegisterPatchModule (*out_addr, aligned_base_size, trampoline_addr, TrampolineSize);
127131#endif
128132
@@ -147,10 +151,13 @@ void Module::LoadModuleToMemory(u32& max_tls_index) {
147151 if ((phdr.p_flags & PF_EXEC) != 0 ) {
148152 segment_prot |= MemoryProt::CpuExec;
149153 }
154+
150155 // Map module segments
151156 const auto memory_type = IsSystemLib () ? VMAType::Code : VMAType::Flexible;
152- memory->MapMemory (&segment_addr, segment_vaddr, segment_size, segment_prot,
153- MemoryMapFlags::Fixed, memory_type, name);
157+ s32 result = memory->MapMemory (&segment_addr, segment_vaddr, segment_size, segment_prot,
158+ MemoryMapFlags::Fixed, memory_type, name);
159+ ASSERT_MSG (result == ORBIS_OK, " Failed to map segment at {:#x} for module {}" ,
160+ segment_vaddr, name);
154161 elf.LoadSegment (segment_vaddr, phdr.p_offset , phdr.p_filesz );
155162 }
156163 if (info.num_segments < 4 ) {
0 commit comments