mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 01:37:35 +00:00
UserspaceEmulator: Remember VM region names for MAP_ANONYMOUS
For some reason we only remembered the names of MAP_FILE mmap regions.
This commit is contained in:
parent
735a6482ac
commit
728d947601
3 changed files with 17 additions and 18 deletions
|
@ -1042,17 +1042,18 @@ u32 Emulator::virt$mmap(u32 params_addr)
|
|||
final_address = result.value().base().get();
|
||||
auto final_size = result.value().size();
|
||||
|
||||
if (params.flags & MAP_ANONYMOUS)
|
||||
mmu().add_region(MmapRegion::create_anonymous(final_address, final_size, params.prot));
|
||||
else {
|
||||
String name_str;
|
||||
if (params.name.characters) {
|
||||
auto name = ByteBuffer::create_uninitialized(params.name.length);
|
||||
mmu().copy_from_vm(name.data(), (FlatPtr)params.name.characters, params.name.length);
|
||||
name_str = { name.data(), name.size() };
|
||||
}
|
||||
auto region = MmapRegion::create_file_backed(final_address, final_size, params.prot, params.flags, params.fd, params.offset, name_str);
|
||||
if (region->name() == "libc.so: .text (Emulated)") {
|
||||
String name_str;
|
||||
if (params.name.characters) {
|
||||
auto name = ByteBuffer::create_uninitialized(params.name.length);
|
||||
mmu().copy_from_vm(name.data(), (FlatPtr)params.name.characters, params.name.length);
|
||||
name_str = { name.data(), name.size() };
|
||||
}
|
||||
|
||||
if (params.flags & MAP_ANONYMOUS) {
|
||||
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") {
|
||||
bool rc = find_malloc_symbols(*region);
|
||||
VERIFY(rc);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue