Err(_) => -1,
}
} else {
- info!("Ignored output to FD {}", fd);
+ warn!("Ignored output to FD {}", fd);
n as isize // pretend it all went well
}; // now result is the value we return back to the program
self.write_primval(
// Stub out all the other pthread calls to just return 0
link_name if link_name.starts_with("pthread_") => {
- warn!("ignoring C ABI call: {}", link_name);
+ info!("ignoring C ABI call: {}", link_name);
self.write_null(dest, dest_ty)?;
}
// A Rust function is missing, which means we are running with MIR missing for libstd (or other dependencies).
// Still, we can make many things mostly work by "emulating" or ignoring some functions.
"std::io::_print" => {
- trace!(
+ warn!(
"Ignoring output. To run programs that print, make sure you have a libstd with full MIR."
);
}
use std::slice::SliceConcatExt;
use std::path::{PathBuf, Path};
use std::io::Write;
+use std::env;
macro_rules! eprintln {
($($arg:tt)*) => {
opt_str
);
let mut config = compiletest::Config::default().tempdir();
- config.mode = "mir-opt".parse().expect("Invalid mode");
+ config.mode = "ui".parse().expect("Invalid mode");
config.src_base = PathBuf::from(path);
config.target = target.to_owned();
config.host = host.to_owned();
config.compile_lib_path = rustc_lib_path();
}
let mut flags = Vec::new();
+ // Control miri logging. This is okay despite concurrent test execution as all tests
+ // will set this env var to the same value.
+ env::set_var("MIRI_LOG", "warn");
// if we are building as part of the rustc test suite, we already have fullmir for everything
if fullmir && rustc_test_suite().is_none() {
if host != target {
flags.push("--miri_host_target".to_owned());
}
config.target_rustcflags = Some(flags.join(" "));
- // don't actually execute the final binary, it might be for other targets and we only care
- // about running miri, not the binary.
- config.runtool = Some("echo \"\" || ".to_owned());
compiletest::run_tests(&config);
}
fn main() {
let mut i = 3;
let _ = catch_unwind(AssertUnwindSafe(|| {i -= 2;} ));
- for _ in 0..i {
- println!("I");
- }
+ println!("{}", i);
}
--- /dev/null
+fn main() {
+ println!("Hello {}", 13);
+}
--- /dev/null
+fn main() {
+ println!("Hello, world!");
+}
--- /dev/null
+Hello, world!
--- /dev/null
+// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![feature(box_syntax)]
+
+trait T {
+ fn print(&self);
+}
+
+#[derive(Debug)]
+struct S {
+ s: isize,
+}
+
+impl T for S {
+ fn print(&self) {
+ println!("{:?}", self);
+ }
+}
+
+fn print_t(t: &T) {
+ t.print();
+}
+
+fn print_s(s: &S) {
+ s.print();
+}
+
+pub fn main() {
+ let s: Box<S> = box S { s: 5 };
+ print_s(&*s);
+ let t: Box<T> = s as Box<T>;
+ print_t(&*t);
+}
--- /dev/null
+S { s: 5 }
+S { s: 5 }
+++ /dev/null
-fn main() {
- println!("Hello {}", 13);
-}
+++ /dev/null
-fn main() {
- println!("Hello, world!");
-}
+++ /dev/null
-// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-#![feature(box_syntax)]
-
-trait T {
- fn print(&self);
-}
-
-#[derive(Debug)]
-struct S {
- s: isize,
-}
-
-impl T for S {
- fn print(&self) {
- println!("{:?}", self);
- }
-}
-
-fn print_t(t: &T) {
- t.print();
-}
-
-fn print_s(s: &S) {
- s.print();
-}
-
-pub fn main() {
- let s: Box<S> = box S { s: 5 };
- print_s(&*s);
- let t: Box<T> = s as Box<T>;
- print_t(&*t);
-}