From 21c97c8484df7b52b197bfb6ff91e31097bd8137 Mon Sep 17 00:00:00 2001 From: Alwin Berger Date: Tue, 21 May 2024 00:22:50 +0200 Subject: [PATCH] WIP: fix isr_starter --- fuzzers/FRET/benchmark/target_symbols.csv | 1 + fuzzers/FRET/src/systemstate/observers.rs | 25 +++++++++++++++-------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/fuzzers/FRET/benchmark/target_symbols.csv b/fuzzers/FRET/benchmark/target_symbols.csv index 6412c8f547..e9139b4ed1 100644 --- a/fuzzers/FRET/benchmark/target_symbols.csv +++ b/fuzzers/FRET/benchmark/target_symbols.csv @@ -24,3 +24,4 @@ micro_int,main_int,FUZZ_INPUT,16,trigger_Qemu_break micro_longint,main_micro_longint,FUZZ_INPUT,16,trigger_Qemu_break minimal,main_minimal,FUZZ_INPUT,4096,trigger_Qemu_break gen3,main_minimal,FUZZ_INPUT,4096,trigger_Qemu_break +interact,main_interact,FUZZ_INPUT,4096,trigger_Qemu_break diff --git a/fuzzers/FRET/src/systemstate/observers.rs b/fuzzers/FRET/src/systemstate/observers.rs index d90fd4c509..d303e6cffc 100644 --- a/fuzzers/FRET/src/systemstate/observers.rs +++ b/fuzzers/FRET/src/systemstate/observers.rs @@ -202,9 +202,9 @@ fn states2intervals(trace: Vec, meta: Vec<(u64, Capt }, CaptureEvent::ISRStart => { // special case for isrs which do not capture their end - if meta[i].2 == "isr_starter" { - &2 - } else { + // if meta[i].2 == "isr_starter" { + // &2 + // } else { // regular case if isr_stack.len() > 0 { let l = isr_stack.back().unwrap(); @@ -213,7 +213,8 @@ fn states2intervals(trace: Vec, meta: Vec<(u64, Capt } else { isr_stack.push_back(2); &2 - }} + } + // } } _ => &100 }; @@ -261,7 +262,7 @@ fn add_abb_info(trace: &mut Vec, table: &HashMap {assert_eq!(trace[i].level,1); assert_eq!(open_abb, None); wip_abb_trace.push(Rc::new(RefCell::new(AtomicBasicBlock{start: edges[i].0.unwrap(), ends: HashSet::from([edges[i].1.unwrap()]), level: if trace[i].level<2 {trace[i].level} else {2}})))}, (CaptureEvent::APIStart , CaptureEvent::End ) => {assert_eq!(trace[i].level,1); assert_eq!(open_abb, None); wip_abb_trace.push(Rc::new(RefCell::new(AtomicBasicBlock{start: edges[i].0.unwrap(), ends: HashSet::from([edges[i].1.unwrap()]), level: if trace[i].level<2 {trace[i].level} else {2}})))}, // ISR ABB - (CaptureEvent::ISRStart, CaptureEvent::ISREnd ) => {assert_eq!(open_abb, None); wip_abb_trace.push(Rc::new(RefCell::new(AtomicBasicBlock{start: edges[i].0.unwrap(), ends: HashSet::from([edges[i].1.unwrap()]), level: if trace[i].level<2 {trace[i].level} else {2}})))}, + (CaptureEvent::ISRStart, CaptureEvent::ISREnd ) => {/*assert_eq!(open_abb, None);*/ wip_abb_trace.push(Rc::new(RefCell::new(AtomicBasicBlock{start: edges[i].0.unwrap(), ends: HashSet::from([edges[i].1.unwrap()]), level: if trace[i].level<2 {trace[i].level} else {2}})))}, (CaptureEvent::ISRStart , CaptureEvent::End ) => {assert_eq!(open_abb, None); wip_abb_trace.push(Rc::new(RefCell::new(AtomicBasicBlock{start: edges[i].0.unwrap(), ends: HashSet::from([edges[i].1.unwrap()]), level: if trace[i].level<2 {trace[i].level} else {2}})))}, // (_, _) => { @@ -293,9 +294,17 @@ fn add_abb_info(trace: &mut Vec, table: &HashMap panic!("Undefined block start")