Disable QemuInjectionHelper if not configured (#1804)
Co-authored-by: Your Name <you@example.com>
This commit is contained in:
parent
df8fa71aa7
commit
e615cb4aed
@ -126,27 +126,25 @@ impl<'a> Client<'a> {
|
||||
log::debug!("start_pc @ {start_pc:#x}");
|
||||
|
||||
#[cfg(not(feature = "injections"))]
|
||||
let extra_tokens = None;
|
||||
let injection_helper = None;
|
||||
|
||||
#[cfg(feature = "injections")]
|
||||
let injection_helper = self
|
||||
.options
|
||||
.injections
|
||||
.as_ref()
|
||||
.map(|injections_file| {
|
||||
.and_then(|injections_file| {
|
||||
let lower = injections_file.to_lowercase();
|
||||
if lower.ends_with("yaml") || lower.ends_with("yml") {
|
||||
QemuInjectionHelper::from_yaml(injections_file)
|
||||
Some(QemuInjectionHelper::from_yaml(injections_file).unwrap())
|
||||
} else if lower.ends_with("toml") {
|
||||
QemuInjectionHelper::from_toml(injections_file)
|
||||
Some(QemuInjectionHelper::from_toml(injections_file).unwrap())
|
||||
} else {
|
||||
todo!("No injections given, what to do?");
|
||||
None
|
||||
}
|
||||
})
|
||||
.unwrap()
|
||||
.unwrap();
|
||||
#[cfg(feature = "injections")]
|
||||
let extra_tokens = Some(injection_helper.tokens.clone());
|
||||
});
|
||||
|
||||
let extra_tokens = injection_helper.as_ref().map(|h| h.tokens.clone());
|
||||
|
||||
emu.entry_break(start_pc);
|
||||
|
||||
@ -167,50 +165,71 @@ impl<'a> Client<'a> {
|
||||
.mgr(mgr)
|
||||
.core_id(core_id)
|
||||
.extra_tokens(extra_tokens);
|
||||
|
||||
if is_asan && is_cmplog {
|
||||
#[cfg(not(feature = "injections"))]
|
||||
let helpers = tuple_list!(
|
||||
edge_coverage_helper,
|
||||
QemuCmpLogHelper::default(),
|
||||
QemuAsanHelper::default(asan.take().unwrap()),
|
||||
);
|
||||
#[cfg(feature = "injections")]
|
||||
let helpers = tuple_list!(
|
||||
edge_coverage_helper,
|
||||
QemuCmpLogHelper::default(),
|
||||
QemuAsanHelper::default(asan.take().unwrap()),
|
||||
injection_helper,
|
||||
);
|
||||
instance.build().run(helpers, state)
|
||||
if let Some(injection_helper) = injection_helper {
|
||||
instance.build().run(
|
||||
tuple_list!(
|
||||
edge_coverage_helper,
|
||||
QemuCmpLogHelper::default(),
|
||||
QemuAsanHelper::default(asan.take().unwrap()),
|
||||
injection_helper,
|
||||
),
|
||||
state,
|
||||
)
|
||||
} else {
|
||||
instance.build().run(
|
||||
tuple_list!(
|
||||
edge_coverage_helper,
|
||||
QemuCmpLogHelper::default(),
|
||||
QemuAsanHelper::default(asan.take().unwrap()),
|
||||
),
|
||||
state,
|
||||
)
|
||||
}
|
||||
} else if is_asan {
|
||||
#[cfg(not(feature = "injections"))]
|
||||
let helpers = tuple_list!(
|
||||
edge_coverage_helper,
|
||||
QemuAsanHelper::default(asan.take().unwrap()),
|
||||
);
|
||||
#[cfg(feature = "injections")]
|
||||
let helpers = tuple_list!(
|
||||
edge_coverage_helper,
|
||||
QemuAsanHelper::default(asan.take().unwrap()),
|
||||
injection_helper,
|
||||
);
|
||||
instance.build().run(helpers, state)
|
||||
if let Some(injection_helper) = injection_helper {
|
||||
instance.build().run(
|
||||
tuple_list!(
|
||||
edge_coverage_helper,
|
||||
QemuAsanHelper::default(asan.take().unwrap()),
|
||||
injection_helper
|
||||
),
|
||||
state,
|
||||
)
|
||||
} else {
|
||||
instance.build().run(
|
||||
tuple_list!(
|
||||
edge_coverage_helper,
|
||||
QemuAsanHelper::default(asan.take().unwrap()),
|
||||
),
|
||||
state,
|
||||
)
|
||||
}
|
||||
} else if is_cmplog {
|
||||
#[cfg(not(feature = "injections"))]
|
||||
let helpers = tuple_list!(edge_coverage_helper, QemuCmpLogHelper::default(),);
|
||||
#[cfg(feature = "injections")]
|
||||
let helpers = tuple_list!(
|
||||
edge_coverage_helper,
|
||||
QemuCmpLogHelper::default(),
|
||||
injection_helper,
|
||||
);
|
||||
instance.build().run(helpers, state)
|
||||
if let Some(injection_helper) = injection_helper {
|
||||
instance.build().run(
|
||||
tuple_list!(
|
||||
edge_coverage_helper,
|
||||
QemuCmpLogHelper::default(),
|
||||
injection_helper
|
||||
),
|
||||
state,
|
||||
)
|
||||
} else {
|
||||
instance.build().run(
|
||||
tuple_list!(edge_coverage_helper, QemuCmpLogHelper::default()),
|
||||
state,
|
||||
)
|
||||
}
|
||||
} else if let Some(injection_helper) = injection_helper {
|
||||
instance
|
||||
.build()
|
||||
.run(tuple_list!(edge_coverage_helper, injection_helper), state)
|
||||
} else {
|
||||
#[cfg(not(feature = "injections"))]
|
||||
let helpers = tuple_list!(edge_coverage_helper,);
|
||||
#[cfg(feature = "injections")]
|
||||
let helpers = tuple_list!(edge_coverage_helper, injection_helper,);
|
||||
instance.build().run(helpers, state)
|
||||
instance
|
||||
.build()
|
||||
.run(tuple_list!(edge_coverage_helper), state)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user