Skip to content

Commit 32dcb7c

Browse files
committed
Update for new LLVM pass manager
1 parent 2913404 commit 32dcb7c

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

src/bin/cargo-afl.rs

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -295,16 +295,30 @@ where
295295

296296
// add some flags to sanitizers to make them work with Rust code
297297
let asan_options = env::var("ASAN_OPTIONS").unwrap_or_default();
298-
let asan_options = format!("detect_odr_violation=0:abort_on_error=1:symbolize=0:{}", asan_options);
298+
let asan_options = format!(
299+
"detect_odr_violation=0:abort_on_error=1:symbolize=0:{}",
300+
asan_options
301+
);
299302

300303
let tsan_options = env::var("TSAN_OPTIONS").unwrap_or_default();
301304
let tsan_options = format!("report_signal_unsafe=0:{}", tsan_options);
302305

306+
let version_meta = rustc_version::version_meta().unwrap();
307+
let passes = if version_meta.semver.minor >= 57
308+
&& version_meta.llvm_version.unwrap_or(true, |v| v.major >= 13)
309+
{
310+
// New LLVM pass manager is enabled when Rust 1.57+ and LLVM 13+
311+
// https://github.com/rust-lang/rust/pull/88243
312+
"sancov-module"
313+
} else {
314+
"sancov"
315+
};
316+
303317
let mut rustflags = format!(
304318
"--cfg fuzzing \
305319
-C debug-assertions \
306320
-C overflow_checks \
307-
-C passes=sancov \
321+
-C passes={} \
308322
-C llvm-args=-sanitizer-coverage-level=3 \
309323
-C llvm-args=-sanitizer-coverage-trace-pc-guard \
310324
-C llvm-args=-sanitizer-coverage-prune-blocks=0 \
@@ -313,6 +327,7 @@ where
313327
-C debuginfo=0 \
314328
-l afl-llvm-rt \
315329
-L {} ",
330+
passes,
316331
common::afl_llvm_rt_dir().display()
317332
);
318333

@@ -323,14 +338,15 @@ where
323338
"--cfg fuzzing \
324339
-C debug-assertions \
325340
-C overflow_checks \
326-
-C passes=sancov \
341+
-C passes={} \
327342
-C llvm-args=-sanitizer-coverage-level=3 \
328343
-C llvm-args=-sanitizer-coverage-trace-pc-guard \
329344
-C llvm-args=-sanitizer-coverage-prune-blocks=0 \
330345
-C opt-level=3 \
331346
-C target-cpu=native \
332347
-C debuginfo=0 \
333348
-L {} ",
349+
passes,
334350
common::afl_llvm_rt_dir().display()
335351
);
336352

0 commit comments

Comments
 (0)