adjust Windows shims for stdlib changes (Windows XP removal)
This commit is contained in:
parent
853254f467
commit
13dd513254
@ -1 +1 @@
|
||||
dc1eee2f256efbd1d3b50b6b090232f81cac6d72
|
||||
9a9477fada5baf69d693e717d6df902e411a73d6
|
||||
|
@ -27,7 +27,6 @@ impl Dlsym {
|
||||
"AcquireSRWLockShared" => Some(Dlsym::AcquireSRWLockShared),
|
||||
"ReleaseSRWLockShared" => Some(Dlsym::ReleaseSRWLockShared),
|
||||
"TryAcquireSRWLockShared" => Some(Dlsym::TryAcquireSRWLockShared),
|
||||
"SetThreadStackGuarantee" => None,
|
||||
"GetSystemTimePreciseAsFileTime" => None,
|
||||
_ => throw_unsup_format!("unsupported Windows dlsym: {}", name),
|
||||
})
|
||||
|
@ -5,6 +5,7 @@ use rustc_target::abi::Size;
|
||||
|
||||
use crate::*;
|
||||
use helpers::check_arg_count;
|
||||
use shims::windows::sync::EvalContextExt as _;
|
||||
|
||||
impl<'mir, 'tcx: 'mir> EvalContextExt<'mir, 'tcx> for crate::MiriEvalContext<'mir, 'tcx> {}
|
||||
pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx> {
|
||||
@ -207,6 +208,34 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
|
||||
this.write_scalar(Scalar::from_i32(result), dest)?;
|
||||
}
|
||||
|
||||
// Synchronization primitives
|
||||
"AcquireSRWLockExclusive" => {
|
||||
let &[ptr] = check_arg_count(args)?;
|
||||
this.AcquireSRWLockExclusive(ptr)?;
|
||||
}
|
||||
"ReleaseSRWLockExclusive" => {
|
||||
let &[ptr] = check_arg_count(args)?;
|
||||
this.ReleaseSRWLockExclusive(ptr)?;
|
||||
}
|
||||
"TryAcquireSRWLockExclusive" => {
|
||||
let &[ptr] = check_arg_count(args)?;
|
||||
let ret = this.TryAcquireSRWLockExclusive(ptr)?;
|
||||
this.write_scalar(Scalar::from_u8(ret), dest)?;
|
||||
}
|
||||
"AcquireSRWLockShared" => {
|
||||
let &[ptr] = check_arg_count(args)?;
|
||||
this.AcquireSRWLockShared(ptr)?;
|
||||
}
|
||||
"ReleaseSRWLockShared" => {
|
||||
let &[ptr] = check_arg_count(args)?;
|
||||
this.ReleaseSRWLockShared(ptr)?;
|
||||
}
|
||||
"TryAcquireSRWLockShared" => {
|
||||
let &[ptr] = check_arg_count(args)?;
|
||||
let ret = this.TryAcquireSRWLockShared(ptr)?;
|
||||
this.write_scalar(Scalar::from_u8(ret), dest)?;
|
||||
}
|
||||
|
||||
// Dynamic symbol loading
|
||||
"GetProcAddress" => {
|
||||
#[allow(non_snake_case)]
|
||||
@ -285,6 +314,12 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
|
||||
// Any non zero value works for the stdlib. This is just used for stack overflows anyway.
|
||||
this.write_scalar(Scalar::from_machine_usize(1, this), dest)?;
|
||||
}
|
||||
"SetThreadStackGuarantee" if this.frame().instance.to_string().starts_with("std::sys::windows::") => {
|
||||
#[allow(non_snake_case)]
|
||||
let &[_StackSizeInBytes] = check_arg_count(args)?;
|
||||
// Any non zero value works for the stdlib. This is just used for stack overflows anyway.
|
||||
this.write_scalar(Scalar::from_u32(1), dest)?;
|
||||
}
|
||||
| "InitializeCriticalSection"
|
||||
| "EnterCriticalSection"
|
||||
| "LeaveCriticalSection"
|
||||
|
Loading…
x
Reference in New Issue
Block a user