diff --git a/examples/bare0.rs b/examples/bare0.rs index dc5286464891aa76943663b8c076761d4452d1c4..f54e9509402fbee65ecdd8df8a14ced982d58f2e 100644 --- a/examples/bare0.rs +++ b/examples/bare0.rs @@ -33,17 +33,33 @@ const X_INIT: u32 = core::u32::MAX; static mut X: u32 = X_INIT; static mut Y: u32 = 0; +fn read_x()->u32{ + unsafe{X} +} +fn read_y()->u32{ + unsafe{Y} +} + +fn write_y(y:u32){ + unsafe{Y=y}; +} + +fn write_x(x:u32){ + unsafe{X=x}; +} + + #[entry] fn main() -> ! { // local mutable variable (changed in safe code) - let mut x = unsafe { X }; + let mut x = read_x(); loop { x = x.wrapping_add(1); // <- place breakpoint here (3) - unsafe { - X = X.wrapping_add(1); - Y = X; - assert!(x == X && X == Y+1); - } + + write_x(read_x().wrapping_add(1)); + write_y(read_x()); + assert!(x == read_x() && read_x() == read_y()+1); + } }