Rustc removed the target wrapper and exposed the target directly.
Result of running:
find . -type f -exec sed -i -e 's/target\.target\([)\.,;]\)/target\1/g' {} \;
Plus one manual edit of the rust-version file
-06a079c43efb062e335e6e6c9dabd3c750619980
+b5c9e2448c9ace53ad5c11585803894651b18b0a
/// if this is not the case.
fn assert_target_os(&self, target_os: &str, name: &str) {
assert_eq!(
- self.eval_context_ref().tcx.sess.target.target.target_os,
+ self.eval_context_ref().tcx.sess.target.target_os,
target_os,
"`{}` is only available on the `{}` target OS",
name,
fn set_last_error_from_io_error(&mut self, e: std::io::Error) -> InterpResult<'tcx> {
use std::io::ErrorKind::*;
let this = self.eval_context_mut();
- let target = &this.tcx.sess.target.target;
+ let target = &this.tcx.sess.target;
let target_os = &target.target_os;
let last_error = if target.options.target_family == Some("unix".to_owned()) {
this.eval_libc(match e.kind() {
pub fn init_extern_statics<'tcx, 'mir>(
this: &mut MiriEvalContext<'mir, 'tcx>,
) -> InterpResult<'tcx> {
- match this.tcx.sess.target.target.target_os.as_str() {
+ match this.tcx.sess.target.target_os.as_str() {
"linux" => {
// "__cxa_thread_atexit_impl"
// This should be all-zero, pointer-sized.
ecx: &mut InterpCx<'mir, 'tcx, Evaluator<'mir, 'tcx>>,
mut excluded_env_vars: Vec<String>,
) -> InterpResult<'tcx> {
- let target_os = ecx.tcx.sess.target.target.target_os.as_str();
+ let target_os = ecx.tcx.sess.target.target_os.as_str();
if target_os == "windows" {
// Temporary hack: Exclude `TERM` var to avoid terminfo trying to open the termcap file.
// Can be removed once https://github.com/rust-lang/miri/issues/1013 is resolved.
pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx> {
fn getenv(&mut self, name_op: OpTy<'tcx, Tag>) -> InterpResult<'tcx, Scalar<Tag>> {
let this = self.eval_context_mut();
- let target_os = &this.tcx.sess.target.target.target_os;
+ let target_os = &this.tcx.sess.target.target_os;
assert!(target_os == "linux" || target_os == "macos", "`getenv` is only available for the UNIX target family");
let name_ptr = this.read_scalar(name_op)?.check_init()?;
value_op: OpTy<'tcx, Tag>,
) -> InterpResult<'tcx, i32> {
let mut this = self.eval_context_mut();
- let target_os = &this.tcx.sess.target.target.target_os;
+ let target_os = &this.tcx.sess.target.target_os;
assert!(target_os == "linux" || target_os == "macos", "`setenv` is only available for the UNIX target family");
let name_ptr = this.read_scalar(name_op)?.check_init()?;
fn unsetenv(&mut self, name_op: OpTy<'tcx, Tag>) -> InterpResult<'tcx, i32> {
let this = self.eval_context_mut();
- let target_os = &this.tcx.sess.target.target.target_os;
+ let target_os = &this.tcx.sess.target.target_os;
assert!(target_os == "linux" || target_os == "macos", "`unsetenv` is only available for the UNIX target family");
let name_ptr = this.read_scalar(name_op)?.check_init()?;
size_op: OpTy<'tcx, Tag>,
) -> InterpResult<'tcx, Scalar<Tag>> {
let this = self.eval_context_mut();
- let target_os = &this.tcx.sess.target.target.target_os;
+ let target_os = &this.tcx.sess.target.target_os;
assert!(target_os == "linux" || target_os == "macos", "`getcwd` is only available for the UNIX target family");
this.check_no_isolation("`getcwd`")?;
fn chdir(&mut self, path_op: OpTy<'tcx, Tag>) -> InterpResult<'tcx, i32> {
let this = self.eval_context_mut();
- let target_os = &this.tcx.sess.target.target.target_os;
+ let target_os = &this.tcx.sess.target.target_os;
assert!(target_os == "linux" || target_os == "macos", "`getcwd` is only available for the UNIX target family");
this.check_no_isolation("`chdir`")?;
fn min_align(&self, size: u64, kind: MiriMemoryKind) -> Align {
let this = self.eval_context_ref();
// List taken from `libstd/sys_common/alloc.rs`.
- let min_align = match this.tcx.sess.target.target.arch.as_str() {
+ let min_align = match this.tcx.sess.target.arch.as_str() {
"x86" | "arm" | "mips" | "powerpc" | "powerpc64" | "asmjs" | "wasm32" => 8,
"x86_64" | "aarch64" | "mips64" | "s390x" | "sparc64" => 16,
arch => bug!("Unsupported target architecture: {}", arch),
}
// Architecture-specific shims
- "llvm.x86.sse2.pause" if this.tcx.sess.target.target.arch == "x86" || this.tcx.sess.target.target.arch == "x86_64" => {
+ "llvm.x86.sse2.pause" if this.tcx.sess.target.arch == "x86" || this.tcx.sess.target.arch == "x86_64" => {
let &[] = check_arg_count(args)?;
this.yield_active_thread();
}
// Platform-specific shims
- _ => match this.tcx.sess.target.target.target_os.as_str() {
+ _ => match this.tcx.sess.target.target_os.as_str() {
"linux" | "macos" => return shims::posix::foreign_items::EvalContextExt::emulate_foreign_item_by_name(this, link_name, args, dest, ret),
"windows" => return shims::windows::foreign_items::EvalContextExt::emulate_foreign_item_by_name(this, link_name, args, dest, ret),
target => throw_unsup_format!("the target `{}` is not supported", target),
direction: PathConversion,
) -> Cow<'a, OsStr> {
let this = self.eval_context_ref();
- let target_os = &this.tcx.sess.target.target.target_os;
+ let target_os = &this.tcx.sess.target.target_os;
#[cfg(windows)]
return if target_os == "windows" {
// Windows-on-Windows, all fine.
this.read_scalar(handle)?.to_machine_usize(this)?;
let symbol = this.read_scalar(symbol)?.check_init()?;
let symbol_name = this.memory.read_c_str(symbol)?;
- if let Some(dlsym) = Dlsym::from_str(symbol_name, &this.tcx.sess.target.target.target_os)? {
+ if let Some(dlsym) = Dlsym::from_str(symbol_name, &this.tcx.sess.target.target_os)? {
let ptr = this.memory.create_fn_alloc(FnVal::Other(dlsym));
this.write_scalar(Scalar::from(ptr), dest)?;
} else {
// Platform-specific shims
_ => {
- match this.tcx.sess.target.target.target_os.as_str() {
+ match this.tcx.sess.target.target_os.as_str() {
"linux" => return shims::posix::linux::foreign_items::EvalContextExt::emulate_foreign_item_by_name(this, link_name, args, dest, ret),
"macos" => return shims::posix::macos::foreign_items::EvalContextExt::emulate_foreign_item_by_name(this, link_name, args, dest, ret),
_ => unreachable!(),
},
None => return this.handle_not_found(),
}
- } else if this.tcx.sess.target.target.target_os == "macos"
+ } else if this.tcx.sess.target.target_os == "macos"
&& cmd == this.eval_libc_i32("F_FULLFSYNC")?
{
let &[_, _] = check_arg_count(args)?;
this.check_no_isolation("`mkdir`")?;
#[cfg_attr(not(unix), allow(unused_variables))]
- let mode = if this.tcx.sess.target.target.target_os == "macos" {
+ let mode = if this.tcx.sess.target.target_os == "macos" {
u32::from(this.read_scalar(mode_op)?.check_init()?.to_u16()?)
} else {
this.read_scalar(mode_op)?.to_u32()?
) -> InterpResult<'tcx> {
let this = self.eval_context_mut();
let (_dest, _ret) = ret.expect("we don't support any diverging dlsym");
- assert!(this.tcx.sess.target.target.target_os == "linux");
+ assert!(this.tcx.sess.target.target_os == "linux");
match dlsym {}
}
) -> InterpResult<'tcx> {
let this = self.eval_context_mut();
let (dest, ret) = ret.expect("we don't support any diverging dlsym");
- assert!(this.tcx.sess.target.target.target_os == "macos");
+ assert!(this.tcx.sess.target.target_os == "macos");
match dlsym {
Dlsym::getentropy => {
// This is the first time we got asked to schedule a destructor. The
// Windows schedule destructor function must be called exactly once,
// this is why it is in this block.
- if this.tcx.sess.target.target.target_os == "windows" {
+ if this.tcx.sess.target.target_os == "windows" {
// On Windows, we signal that the thread quit by starting the
// relevant function, reenabling the thread, and going back to
// the scheduler.
) -> InterpResult<'tcx> {
let this = self.eval_context_mut();
let (dest, ret) = ret.expect("we don't support any diverging dlsym");
- assert!(this.tcx.sess.target.target.target_os == "windows");
+ assert!(this.tcx.sess.target.target_os == "windows");
match dlsym {
Dlsym::AcquireSRWLockExclusive => {
let &[hModule, lpProcName] = check_arg_count(args)?;
this.read_scalar(hModule)?.to_machine_isize(this)?;
let name = this.memory.read_c_str(this.read_scalar(lpProcName)?.check_init()?)?;
- if let Some(dlsym) = Dlsym::from_str(name, &this.tcx.sess.target.target.target_os)? {
+ if let Some(dlsym) = Dlsym::from_str(name, &this.tcx.sess.target.target_os)? {
let ptr = this.memory.create_fn_alloc(FnVal::Other(dlsym));
this.write_scalar(Scalar::from(ptr), dest)?;
} else {