|
|
|
@ -218,11 +218,13 @@ void Process::FreeTLSSlot(VAddr tls_address) { |
|
|
|
} |
|
|
|
|
|
|
|
void Process::LoadModule(CodeSet module_, VAddr base_addr) { |
|
|
|
const auto memory = std::make_shared<std::vector<u8>>(std::move(module_.memory)); |
|
|
|
|
|
|
|
const auto MapSegment = [&](const CodeSet::Segment& segment, VMAPermission permissions, |
|
|
|
MemoryState memory_state) { |
|
|
|
const auto vma = vm_manager |
|
|
|
.MapMemoryBlock(segment.addr + base_addr, module_.memory, |
|
|
|
segment.offset, segment.size, memory_state) |
|
|
|
.MapMemoryBlock(segment.addr + base_addr, memory, segment.offset, |
|
|
|
segment.size, memory_state) |
|
|
|
.Unwrap(); |
|
|
|
vm_manager.Reprotect(vma, permissions); |
|
|
|
}; |
|
|
|
|