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.
This commit is contained in:
Hendiadyoin1 2021-04-08 17:13:42 +02:00 committed by Andreas Kling
parent 58e373c0f2
commit 2469e07784
Notes: sideshowbarker 2024-07-18 20:38:26 +09:00

View File

@ -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;
}