Update WASI to cap-std 0.25 and windows-sys. (#4302)
This updates to rustix 0.35.6, and updates wasi-common to use cap-std 0.25 and windows-sys (instead of winapi). Changes include: - Better error code mappings on Windows. - Fixes undefined references to `utimensat` on Darwin. - Fixes undefined references to `preadv64` and `pwritev64` on Android. - Updates to io-lifetimes 0.7, which matches the io_safety API in Rust. - y2038 bug fixes for 32-bit platforms
This commit is contained in:
@@ -333,7 +333,7 @@ impl MemoryImageSlot {
|
||||
// mprotect the relevant region.
|
||||
self.set_protection(
|
||||
self.cur_size..size_bytes,
|
||||
rustix::io::MprotectFlags::READ | rustix::io::MprotectFlags::WRITE,
|
||||
rustix::mm::MprotectFlags::READ | rustix::mm::MprotectFlags::WRITE,
|
||||
)?;
|
||||
self.cur_size = size_bytes;
|
||||
|
||||
@@ -386,7 +386,7 @@ impl MemoryImageSlot {
|
||||
.map_err(|e| InstantiationError::Resource(e.into()))?;
|
||||
self.set_protection(
|
||||
0..initial_size_bytes,
|
||||
rustix::io::MprotectFlags::READ | rustix::io::MprotectFlags::WRITE,
|
||||
rustix::mm::MprotectFlags::READ | rustix::mm::MprotectFlags::WRITE,
|
||||
)
|
||||
.map_err(|e| InstantiationError::Resource(e.into()))?;
|
||||
} else if initial_size_bytes < self.initial_size {
|
||||
@@ -409,7 +409,7 @@ impl MemoryImageSlot {
|
||||
// mprotect(NONE) the zone from the first to the second.
|
||||
self.set_protection(
|
||||
initial_size_bytes..self.initial_size,
|
||||
rustix::io::MprotectFlags::empty(),
|
||||
rustix::mm::MprotectFlags::empty(),
|
||||
)
|
||||
.map_err(|e| InstantiationError::Resource(e.into()))?;
|
||||
} else if initial_size_bytes > self.initial_size {
|
||||
@@ -420,7 +420,7 @@ impl MemoryImageSlot {
|
||||
// made visible as zeros.
|
||||
self.set_protection(
|
||||
self.initial_size..initial_size_bytes,
|
||||
rustix::io::MprotectFlags::READ | rustix::io::MprotectFlags::WRITE,
|
||||
rustix::mm::MprotectFlags::READ | rustix::mm::MprotectFlags::WRITE,
|
||||
)
|
||||
.map_err(|e| InstantiationError::Resource(e.into()))?;
|
||||
} else {
|
||||
@@ -444,11 +444,11 @@ impl MemoryImageSlot {
|
||||
);
|
||||
if image.len > 0 {
|
||||
unsafe {
|
||||
let ptr = rustix::io::mmap(
|
||||
let ptr = rustix::mm::mmap(
|
||||
(self.base + image.linear_memory_offset) as *mut c_void,
|
||||
image.len,
|
||||
rustix::io::ProtFlags::READ | rustix::io::ProtFlags::WRITE,
|
||||
rustix::io::MapFlags::PRIVATE | rustix::io::MapFlags::FIXED,
|
||||
rustix::mm::ProtFlags::READ | rustix::mm::ProtFlags::WRITE,
|
||||
rustix::mm::MapFlags::PRIVATE | rustix::mm::MapFlags::FIXED,
|
||||
image.fd.as_file(),
|
||||
image.fd_offset,
|
||||
)
|
||||
@@ -477,10 +477,10 @@ impl MemoryImageSlot {
|
||||
// semantics we want for reuse between instances, so it's all we
|
||||
// need to do.
|
||||
unsafe {
|
||||
rustix::io::madvise(
|
||||
rustix::mm::madvise(
|
||||
self.base as *mut c_void,
|
||||
self.cur_size,
|
||||
rustix::io::Advice::LinuxDontNeed,
|
||||
rustix::mm::Advice::LinuxDontNeed,
|
||||
)?;
|
||||
}
|
||||
} else {
|
||||
@@ -499,20 +499,20 @@ impl MemoryImageSlot {
|
||||
// mprotect the initial heap region beyond the initial heap size back to PROT_NONE.
|
||||
self.set_protection(
|
||||
self.initial_size..self.cur_size,
|
||||
rustix::io::MprotectFlags::empty(),
|
||||
rustix::mm::MprotectFlags::empty(),
|
||||
)?;
|
||||
self.cur_size = self.initial_size;
|
||||
self.dirty = false;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn set_protection(&self, range: Range<usize>, flags: rustix::io::MprotectFlags) -> Result<()> {
|
||||
fn set_protection(&self, range: Range<usize>, flags: rustix::mm::MprotectFlags) -> Result<()> {
|
||||
assert!(range.start <= range.end);
|
||||
assert!(range.end <= self.static_size);
|
||||
let mprotect_start = self.base.checked_add(range.start).unwrap();
|
||||
if range.len() > 0 {
|
||||
unsafe {
|
||||
rustix::io::mprotect(mprotect_start as *mut _, range.len(), flags)?;
|
||||
rustix::mm::mprotect(mprotect_start as *mut _, range.len(), flags)?;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -532,11 +532,11 @@ impl MemoryImageSlot {
|
||||
/// inaccessible. Used both during instantiate and during drop.
|
||||
fn reset_with_anon_memory(&self) -> Result<()> {
|
||||
unsafe {
|
||||
let ptr = rustix::io::mmap_anonymous(
|
||||
let ptr = rustix::mm::mmap_anonymous(
|
||||
self.base as *mut c_void,
|
||||
self.static_size,
|
||||
rustix::io::ProtFlags::empty(),
|
||||
rustix::io::MapFlags::PRIVATE | rustix::io::MapFlags::FIXED,
|
||||
rustix::mm::ProtFlags::empty(),
|
||||
rustix::mm::MapFlags::PRIVATE | rustix::mm::MapFlags::FIXED,
|
||||
)?;
|
||||
assert_eq!(ptr as usize, self.base);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user