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}");
|
log::debug!("start_pc @ {start_pc:#x}");
|
||||||
|
|
||||||
#[cfg(not(feature = "injections"))]
|
#[cfg(not(feature = "injections"))]
|
||||||
let extra_tokens = None;
|
let injection_helper = None;
|
||||||
|
|
||||||
#[cfg(feature = "injections")]
|
#[cfg(feature = "injections")]
|
||||||
let injection_helper = self
|
let injection_helper = self
|
||||||
.options
|
.options
|
||||||
.injections
|
.injections
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.map(|injections_file| {
|
.and_then(|injections_file| {
|
||||||
let lower = injections_file.to_lowercase();
|
let lower = injections_file.to_lowercase();
|
||||||
if lower.ends_with("yaml") || lower.ends_with("yml") {
|
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") {
|
} else if lower.ends_with("toml") {
|
||||||
QemuInjectionHelper::from_toml(injections_file)
|
Some(QemuInjectionHelper::from_toml(injections_file).unwrap())
|
||||||
} else {
|
} else {
|
||||||
todo!("No injections given, what to do?");
|
None
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
.unwrap()
|
|
||||||
.unwrap();
|
let extra_tokens = injection_helper.as_ref().map(|h| h.tokens.clone());
|
||||||
#[cfg(feature = "injections")]
|
|
||||||
let extra_tokens = Some(injection_helper.tokens.clone());
|
|
||||||
|
|
||||||
emu.entry_break(start_pc);
|
emu.entry_break(start_pc);
|
||||||
|
|
||||||
@ -167,50 +165,71 @@ impl<'a> Client<'a> {
|
|||||||
.mgr(mgr)
|
.mgr(mgr)
|
||||||
.core_id(core_id)
|
.core_id(core_id)
|
||||||
.extra_tokens(extra_tokens);
|
.extra_tokens(extra_tokens);
|
||||||
|
|
||||||
if is_asan && is_cmplog {
|
if is_asan && is_cmplog {
|
||||||
#[cfg(not(feature = "injections"))]
|
if let Some(injection_helper) = injection_helper {
|
||||||
let helpers = tuple_list!(
|
instance.build().run(
|
||||||
edge_coverage_helper,
|
tuple_list!(
|
||||||
QemuCmpLogHelper::default(),
|
|
||||||
QemuAsanHelper::default(asan.take().unwrap()),
|
|
||||||
);
|
|
||||||
#[cfg(feature = "injections")]
|
|
||||||
let helpers = tuple_list!(
|
|
||||||
edge_coverage_helper,
|
edge_coverage_helper,
|
||||||
QemuCmpLogHelper::default(),
|
QemuCmpLogHelper::default(),
|
||||||
QemuAsanHelper::default(asan.take().unwrap()),
|
QemuAsanHelper::default(asan.take().unwrap()),
|
||||||
injection_helper,
|
injection_helper,
|
||||||
);
|
),
|
||||||
instance.build().run(helpers, state)
|
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)
|
|
||||||
} 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)
|
|
||||||
} else {
|
} else {
|
||||||
#[cfg(not(feature = "injections"))]
|
instance.build().run(
|
||||||
let helpers = tuple_list!(edge_coverage_helper,);
|
tuple_list!(
|
||||||
#[cfg(feature = "injections")]
|
edge_coverage_helper,
|
||||||
let helpers = tuple_list!(edge_coverage_helper, injection_helper,);
|
QemuCmpLogHelper::default(),
|
||||||
instance.build().run(helpers, state)
|
QemuAsanHelper::default(asan.take().unwrap()),
|
||||||
|
),
|
||||||
|
state,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
} else if is_asan {
|
||||||
|
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 {
|
||||||
|
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 {
|
||||||
|
instance
|
||||||
|
.build()
|
||||||
|
.run(tuple_list!(edge_coverage_helper), state)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user