Don't copy executable code into a CodeMemory (#3265)
* Don't copy executable code into a `CodeMemory` This commit moves a copy from compiled artifacts into a `CodeMemory`. In general this commit drastically changes the meaning of a `CodeMemory`. Previously it was an iteratively-pushed-on structure that would accumulate executable code over time. Afterwards, however, it's a manager for an `MmapVec` which updates the permissions on text section to ensure that the pages are executable. By taking ownership of an `MmapVec` within a `CodeMemory` there's no need to copy any data around, which means that the `.text` section in the ELF image produced by Wasmtime is usable as-is after placement in memory and relocations have been resolved. This moves Wasmtime one step closer to being able to directly use a module after it's `mmap`'d into memory, optimizing when a module is loaded. * Fix windows section alignment * Review comments
This commit is contained in:
@@ -396,7 +396,7 @@ impl<'a> ObjectBuilder<'a> {
|
||||
unwind_info.extend_from_slice(&info.end.to_le_bytes());
|
||||
unwind_info.extend_from_slice(&info.unwind_address.to_le_bytes());
|
||||
}
|
||||
self.obj.append_section_data(section_id, &unwind_info, 1);
|
||||
self.obj.append_section_data(section_id, &unwind_info, 4);
|
||||
}
|
||||
|
||||
/// This function appends a nonstandard section to the object which is only
|
||||
|
||||
Reference in New Issue
Block a user