mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-28 03:27:44 +00:00
factor::benches: Add check against ASLR
This commit is contained in:
parent
ddfcd2eb14
commit
7c649bc74e
2 changed files with 27 additions and 1 deletions
|
@ -25,7 +25,6 @@ as possible:
|
|||
to it, so it won't be preempted in the middle of a measurement ;
|
||||
- disable ASLR by running `setarch -R cargo bench`, so we can compare results
|
||||
across multiple executions.
|
||||
**TODO**: check this propagates to the benchmark process
|
||||
|
||||
|
||||
[`criterion`]: https://bheisler.github.io/criterion.rs/book/index.html
|
||||
|
|
|
@ -4,6 +4,9 @@ use std::convert::TryInto;
|
|||
use uu_factor::{table::*, Factors};
|
||||
|
||||
fn table(c: &mut Criterion) {
|
||||
#[cfg(target_os = "linux")]
|
||||
check_personality();
|
||||
|
||||
const INPUT_SIZE: usize = 128;
|
||||
assert!(
|
||||
INPUT_SIZE % CHUNK_SIZE == 0,
|
||||
|
@ -55,5 +58,29 @@ fn table(c: &mut Criterion) {
|
|||
group.finish()
|
||||
}
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
fn check_personality() {
|
||||
use std::fs;
|
||||
const ADDR_NO_RANDOMIZE: u64 = 0x0040000;
|
||||
const PERSONALITY_PATH: &'static str = "/proc/self/personality";
|
||||
|
||||
let p_string = fs::read_to_string(PERSONALITY_PATH)
|
||||
.expect(&format!("Couldn't read '{}'", PERSONALITY_PATH))
|
||||
.strip_suffix("\n")
|
||||
.unwrap()
|
||||
.to_owned();
|
||||
|
||||
let personality = u64::from_str_radix(&p_string, 16).expect(&format!(
|
||||
"Expected a hex value for personality, got '{:?}'",
|
||||
p_string
|
||||
));
|
||||
if personality & ADDR_NO_RANDOMIZE == 0 {
|
||||
eprintln!(
|
||||
"WARNING: Benchmarking with ASLR enabled (personality is {:x}), results might not be reproducible.",
|
||||
personality
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
criterion_group!(benches, table);
|
||||
criterion_main!(benches);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue