add always-failing GetFileInformationByHandleEx stub
This commit is contained in:
parent
76c554eac2
commit
bb911ce32a
1 changed files with 20 additions and 15 deletions
|
|
@ -343,16 +343,6 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> {
|
|||
// FIXME: we should set last_error, but to what?
|
||||
this.write_null(dest)?;
|
||||
}
|
||||
"GetConsoleMode" => {
|
||||
// Windows "isatty" (in libtest) needs this, so we fake it.
|
||||
let [console, mode] =
|
||||
this.check_shim(abi, Abi::System { unwind: false }, link_name, args)?;
|
||||
this.read_scalar(console)?.to_machine_isize(this)?;
|
||||
this.deref_operand(mode)?;
|
||||
// Indicate an error.
|
||||
// FIXME: we should set last_error, but to what?
|
||||
this.write_null(dest)?;
|
||||
}
|
||||
"GetStdHandle" => {
|
||||
let [which] =
|
||||
this.check_shim(abi, Abi::System { unwind: false }, link_name, args)?;
|
||||
|
|
@ -404,14 +394,14 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> {
|
|||
let [] = this.check_shim(abi, Abi::System { unwind: false }, link_name, args)?;
|
||||
// Just fake a HANDLE
|
||||
// It's fine to not use the Handle type here because its a stub
|
||||
this.write_scalar(Scalar::from_machine_isize(1, this), dest)?;
|
||||
this.write_int(1, dest)?;
|
||||
}
|
||||
"GetModuleHandleA" if this.frame_in_std() => {
|
||||
#[allow(non_snake_case)]
|
||||
let [_lpModuleName] =
|
||||
this.check_shim(abi, Abi::System { unwind: false }, link_name, args)?;
|
||||
// We need to return something non-null here to make `compat_fn!` work.
|
||||
this.write_scalar(Scalar::from_machine_isize(1, this), dest)?;
|
||||
this.write_int(1, dest)?;
|
||||
}
|
||||
"SetConsoleTextAttribute" if this.frame_in_std() => {
|
||||
#[allow(non_snake_case)]
|
||||
|
|
@ -420,24 +410,39 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> {
|
|||
// Pretend these does not exist / nothing happened, by returning zero.
|
||||
this.write_null(dest)?;
|
||||
}
|
||||
"GetConsoleMode" if this.frame_in_std() => {
|
||||
let [console, mode] =
|
||||
this.check_shim(abi, Abi::System { unwind: false }, link_name, args)?;
|
||||
this.read_scalar(console)?.to_machine_isize(this)?;
|
||||
this.deref_operand(mode)?;
|
||||
// Indicate an error.
|
||||
this.write_null(dest)?;
|
||||
}
|
||||
"GetFileInformationByHandleEx" if this.frame_in_std() => {
|
||||
#[allow(non_snake_case)]
|
||||
let [_hFile, _FileInformationClass, _lpFileInformation, _dwBufferSize] =
|
||||
this.check_shim(abi, Abi::System { unwind: false }, link_name, args)?;
|
||||
// Just make it fail.
|
||||
this.write_null(dest)?;
|
||||
}
|
||||
"AddVectoredExceptionHandler" if this.frame_in_std() => {
|
||||
#[allow(non_snake_case)]
|
||||
let [_First, _Handler] =
|
||||
this.check_shim(abi, Abi::System { unwind: false }, link_name, args)?;
|
||||
// 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)?;
|
||||
this.write_int(1, dest)?;
|
||||
}
|
||||
"SetThreadStackGuarantee" if this.frame_in_std() => {
|
||||
#[allow(non_snake_case)]
|
||||
let [_StackSizeInBytes] =
|
||||
this.check_shim(abi, Abi::System { unwind: false }, link_name, 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)?;
|
||||
this.write_int(1, dest)?;
|
||||
}
|
||||
"GetCurrentProcessId" if this.frame_in_std() => {
|
||||
let [] = this.check_shim(abi, Abi::System { unwind: false }, link_name, args)?;
|
||||
let result = this.GetCurrentProcessId()?;
|
||||
this.write_scalar(Scalar::from_u32(result), dest)?;
|
||||
this.write_int(result, dest)?;
|
||||
}
|
||||
// this is only callable from std because we know that std ignores the return value
|
||||
"SwitchToThread" if this.frame_in_std() => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue