Browse Source

protect/map shenanigans with macOS

liz-dynarmic-macos-fbsd-port
lizzie 3 weeks ago
committed by Caio Oliveira
parent
commit
7f8f7b4239
No known key found for this signature in database GPG Key ID: 362DA3DC1901E080
  1. 11
      src/common/host_memory.cpp

11
src/common/host_memory.cpp

@ -629,8 +629,9 @@ public:
u8* addr = virtual_base + virtual_offset;
#ifdef __APPLE__
// The way Steve Jobs intended
addr = (void*)trunc_page(u64(addr));
addr = (u8*)trunc_page(u64(addr) + host_offset);
length = round_page(length);
host_offset = 0;
#endif
void* ret = mmap(addr, length, prot_flags, flags, fd, host_offset);
ASSERT_MSG(ret != MAP_FAILED, "mmap: {}", strerror(errno));
@ -665,7 +666,13 @@ public:
if (execute)
flags |= PROT_EXEC;
#endif
int ret = mprotect(virtual_base + virtual_offset, length, flags);
u8* addr = virtual_base + virtual_offset;
#ifdef __APPLE__
// The way Steve Jobs intended
addr = (u8*)trunc_page(u64(addr));
length = round_page(length);
#endif
int ret = mprotect(addr, length, flags);
ASSERT_MSG(ret == 0, "mprotect failed: {}", strerror(errno));
}

Loading…
Cancel
Save