mirror of
https://github.com/rust-lang/rust.git
synced 2025-10-03 02:40:40 +00:00
commit
32db0c6da4
@ -1,7 +1,7 @@
|
||||
use std::ffi::OsStr;
|
||||
use std::path::Path;
|
||||
|
||||
use crate::utils::run_command_with_output;
|
||||
use crate::utils::{run_command_with_output, walk_dir};
|
||||
|
||||
fn show_usage() {
|
||||
println!(
|
||||
@ -32,5 +32,31 @@ pub fn run() -> Result<(), String> {
|
||||
if check { &[&"cargo", &"fmt", &"--check"] } else { &[&"cargo", &"fmt"] };
|
||||
|
||||
run_command_with_output(cmd, Some(Path::new(".")))?;
|
||||
run_command_with_output(cmd, Some(Path::new("build_system")))
|
||||
run_command_with_output(cmd, Some(Path::new("build_system")))?;
|
||||
|
||||
run_rustfmt_recursively("tests/run", check)
|
||||
}
|
||||
|
||||
fn run_rustfmt_recursively<P>(dir: P, check: bool) -> Result<(), String>
|
||||
where
|
||||
P: AsRef<Path>,
|
||||
{
|
||||
walk_dir(
|
||||
dir,
|
||||
&mut |dir| run_rustfmt_recursively(dir, check),
|
||||
&mut |file_path| {
|
||||
if file_path.extension().filter(|ext| ext == &OsStr::new("rs")).is_some() {
|
||||
let rustfmt_cmd: &[&dyn AsRef<OsStr>] = if check {
|
||||
&[&"rustfmt", &"--check", &file_path]
|
||||
} else {
|
||||
&[&"rustfmt", &file_path]
|
||||
};
|
||||
|
||||
run_command_with_output(rustfmt_cmd, Some(Path::new(".")))
|
||||
} else {
|
||||
Ok(())
|
||||
}
|
||||
},
|
||||
true,
|
||||
)
|
||||
}
|
||||
|
@ -7,12 +7,10 @@ fn main() {
|
||||
use std::hint::black_box;
|
||||
|
||||
macro_rules! check {
|
||||
($ty:ty, $expr:expr) => {
|
||||
{
|
||||
const EXPECTED: $ty = $expr;
|
||||
assert_eq!($expr, EXPECTED);
|
||||
}
|
||||
};
|
||||
($ty:ty, $expr:expr) => {{
|
||||
const EXPECTED: $ty = $expr;
|
||||
assert_eq!($expr, EXPECTED);
|
||||
}};
|
||||
}
|
||||
|
||||
check!(u32, (2220326408_u32 + black_box(1)) >> (32 - 6));
|
||||
|
@ -12,7 +12,7 @@ fn main() {
|
||||
|
||||
let arg_count = std::env::args().count();
|
||||
let int = isize::MAX;
|
||||
let _int = int + arg_count as isize; // overflow
|
||||
let _int = int + arg_count as isize; // overflow
|
||||
|
||||
// If overflow checking is disabled, we should reach here.
|
||||
#[cfg(not(debug_assertions))]
|
||||
|
@ -27,12 +27,8 @@ fn one() -> isize {
|
||||
|
||||
#[no_mangle]
|
||||
extern "C" fn main(argc: i32, _argv: *const *const u8) -> i32 {
|
||||
let test = Test {
|
||||
field: one(),
|
||||
};
|
||||
let two = Two {
|
||||
two: 2,
|
||||
};
|
||||
let test = Test { field: one() };
|
||||
let two = Two { two: 2 };
|
||||
unsafe {
|
||||
libc::printf(b"%ld\n\0" as *const u8 as *const i8, test.field);
|
||||
libc::printf(b"%ld\n\0" as *const u8 as *const i8, two.two);
|
||||
|
@ -12,15 +12,11 @@ struct Struct {
|
||||
func: unsafe fn(*const ()),
|
||||
}
|
||||
|
||||
fn func(_ptr: *const ()) {
|
||||
}
|
||||
fn func(_ptr: *const ()) {}
|
||||
|
||||
fn main() {
|
||||
let mut x = MaybeUninit::<&Struct>::uninit();
|
||||
x.write(&Struct {
|
||||
pointer: std::ptr::null(),
|
||||
func,
|
||||
});
|
||||
x.write(&Struct { pointer: std::ptr::null(), func });
|
||||
let x = unsafe { x.assume_init() };
|
||||
let value = unsafe { (x as *const Struct).read_volatile() };
|
||||
println!("{:?}", value);
|
||||
|
@ -7,7 +7,14 @@ mod libc {
|
||||
#[link(name = "c")]
|
||||
extern "C" {
|
||||
pub fn sigaction(signum: i32, act: *const sigaction, oldact: *mut sigaction) -> i32;
|
||||
pub fn mmap(addr: *mut (), len: usize, prot: i32, flags: i32, fd: i32, offset: i64) -> *mut ();
|
||||
pub fn mmap(
|
||||
addr: *mut (),
|
||||
len: usize,
|
||||
prot: i32,
|
||||
flags: i32,
|
||||
fd: i32,
|
||||
offset: i64,
|
||||
) -> *mut ();
|
||||
pub fn mprotect(addr: *mut (), len: usize, prot: i32) -> i32;
|
||||
}
|
||||
|
||||
@ -54,7 +61,8 @@ fn main() {
|
||||
libc::MAP_PRIVATE | libc::MAP_ANONYMOUS,
|
||||
-1,
|
||||
0,
|
||||
).cast();
|
||||
)
|
||||
.cast();
|
||||
if STORAGE == libc::MAP_FAILED {
|
||||
panic!("error: mmap failed");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user