From ef1c8a7913ba73b6d1de0f7e2c11919b5c05fcba Mon Sep 17 00:00:00 2001 From: Per <Per Lindgren> Date: Mon, 30 Dec 2019 15:29:39 +0100 Subject: [PATCH] vcell works --- Cargo.toml | 25 +++++++++++++++++++++++-- examples/klee_test.rs | 4 +++- examples/vcell_test.rs | 30 ++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 examples/vcell_test.rs diff --git a/Cargo.toml b/Cargo.toml index f32ad7f..8cdb97f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,12 +6,33 @@ edition = "2018" [dependencies] panic-halt = "0.2.0" +cortex-m-semihosting = "0.3.5" +lm3s6965 = "0.1.3" +vcell = "0.1.2" + +[dependencies.panic-klee] +git = "https://gitlab.henriktjader.com/pln/panic-klee.git" +version = "0.1.0" [dependencies.klee-sys] -path = "../klee-sys" +git = "https://gitlab.henriktjader.com/pln/klee-sys.git" +version = "0.1.0" + +[dependencies.cortex-m-rtfm] +path = "../cortex-m-rtpro" + +[dependencies.cortex-m] +version = "0.6.0" +# #features = ["inline-asm", "klee-analysis"] + +[patch.crates-io] +vcell = { git = "https://github.com/perlindgren/vcell.git", branch = "trustit" } +# volatile-register = { git = "https://github.com/perlindgren/volatile-register.git" } +# cortex-m = { git = "https://github.com/perlindgren/cortex-m.git", branch = "klee-analysis" } + [features] -klee-analysis = ["klee-sys/klee-analysis"] +klee-analysis = ["klee-sys/klee-analysis", "vcell/klee-analysis", "cortex-m-rtfm/klee-analysis"] [profile.dev] panic = "abort" diff --git a/examples/klee_test.rs b/examples/klee_test.rs index 2dc2836..282d2bc 100644 --- a/examples/klee_test.rs +++ b/examples/klee_test.rs @@ -2,7 +2,7 @@ #![no_main] #[cfg(feature = "klee-analysis")] -use klee_sys::{klee_abort, klee_assert, klee_assert_eq, klee_make_symbolic}; +use panic_klee as _; #[cfg(not(feature = "klee-analysis"))] use panic_halt as _; @@ -14,6 +14,8 @@ fn main() { panic!(); } +#[cfg(feature = "klee-analysis")] +use klee_sys::{klee_abort, klee_assert, klee_assert_eq, klee_make_symbolic}; #[cfg(feature = "klee-analysis")] #[no_mangle] fn main() { diff --git a/examples/vcell_test.rs b/examples/vcell_test.rs new file mode 100644 index 0000000..a362802 --- /dev/null +++ b/examples/vcell_test.rs @@ -0,0 +1,30 @@ +#![no_std] +#![no_main] + +#[cfg(feature = "klee-analysis")] +use klee_sys::{klee_abort, klee_assert, klee_assert_eq, klee_make_symbolic}; + +#[cfg(feature = "klee-analysis")] +use panic_klee as _; + +#[cfg(not(feature = "klee-analysis"))] +use panic_halt as _; + +#[cfg(not(feature = "klee-analysis"))] +#[no_mangle] +fn main() { + let mut a = 0; + panic!(); +} + +use vcell; +#[cfg(feature = "klee-analysis")] +#[no_mangle] +fn main() { + let mut vc = vcell::VolatileCell::new(0u32); + match vc.get() { + 2 => klee_abort!(), + 1 => klee_abort!(), + _ => (), + }; +} -- GitLab