From 2469e07784f3eef5638b5b3c64ba6a078799c532 Mon Sep 17 00:00:00 2001 From: Hendiadyoin1 Date: Thu, 8 Apr 2021 17:13:42 +0200 Subject: [PATCH] UE: only write libc and libsystem location once This is important when emulating UE itself, which maps these files two times, and then we forget the original location of it. --- Userland/DevTools/UserspaceEmulator/Emulator_syscalls.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Userland/DevTools/UserspaceEmulator/Emulator_syscalls.cpp b/Userland/DevTools/UserspaceEmulator/Emulator_syscalls.cpp index 378b789dee..e6418da153 100644 --- a/Userland/DevTools/UserspaceEmulator/Emulator_syscalls.cpp +++ b/Userland/DevTools/UserspaceEmulator/Emulator_syscalls.cpp @@ -880,13 +880,12 @@ u32 Emulator::virt$mmap(u32 params_addr) mmu().add_region(MmapRegion::create_anonymous(final_address, final_size, params.prot, move(name_str))); } else { auto region = MmapRegion::create_file_backed(final_address, final_size, params.prot, params.flags, params.fd, params.offset, move(name_str)); - if (region->name() == "libc.so: .text") { + if (region->name() == "libc.so: .text" && !m_libc_start) { m_libc_start = final_address; m_libc_end = final_address + final_size; bool rc = find_malloc_symbols(*region); VERIFY(rc); - } - if (region->name() == "libsystem.so: .text") { + } else if (region->name() == "libsystem.so: .text" && !m_libsystem_start) { m_libsystem_start = final_address; m_libsystem_end = final_address + final_size; }