From 89171d89bf6694f8dbb4dd9bce5fec7479187c92 Mon Sep 17 00:00:00 2001 From: ParantezTech Date: Fri, 20 Feb 2026 18:22:15 +0300 Subject: [PATCH] map and register host trampoline for x86_64 patching --- src/core/module.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/core/module.cpp b/src/core/module.cpp index 2522a82a0..eb209da92 100644 --- a/src/core/module.cpp +++ b/src/core/module.cpp @@ -119,6 +119,17 @@ void Module::LoadModuleToMemory(u32& max_tls_index) { LOG_INFO(Core_Linker, "Loading module {} to {}", name, fmt::ptr(*out_addr)); #ifdef ARCH_X86_64 + void* trampoline_region = std::bit_cast(base_virtual_addr + aligned_base_size); + const int tramp_ret = memory->MapMemory( + &trampoline_region, + base_virtual_addr + aligned_base_size, + TrampolineSize, + MemoryProt::CpuReadWrite | MemoryProt::CpuExec, + MemoryMapFlags::Fixed | MemoryMapFlags::NoOverwrite, + VMAType::File, + "Trampoline"); + ASSERT_MSG(tramp_ret == 0, "Unable to map trampoline memory"); + // Initialize trampoline generator. void* trampoline_addr = std::bit_cast(base_virtual_addr + aligned_base_size); RegisterPatchModule(*out_addr, aligned_base_size, trampoline_addr, TrampolineSize);