@@ -295,16 +295,30 @@ where
295
295
296
296
// add some flags to sanitizers to make them work with Rust code
297
297
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
+ ) ;
299
302
300
303
let tsan_options = env:: var ( "TSAN_OPTIONS" ) . unwrap_or_default ( ) ;
301
304
let tsan_options = format ! ( "report_signal_unsafe=0:{}" , tsan_options) ;
302
305
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
+
303
317
let mut rustflags = format ! (
304
318
"--cfg fuzzing \
305
319
-C debug-assertions \
306
320
-C overflow_checks \
307
- -C passes=sancov \
321
+ -C passes={} \
308
322
-C llvm-args=-sanitizer-coverage-level=3 \
309
323
-C llvm-args=-sanitizer-coverage-trace-pc-guard \
310
324
-C llvm-args=-sanitizer-coverage-prune-blocks=0 \
@@ -313,6 +327,7 @@ where
313
327
-C debuginfo=0 \
314
328
-l afl-llvm-rt \
315
329
-L {} ",
330
+ passes,
316
331
common:: afl_llvm_rt_dir( ) . display( )
317
332
) ;
318
333
@@ -323,14 +338,15 @@ where
323
338
"--cfg fuzzing \
324
339
-C debug-assertions \
325
340
-C overflow_checks \
326
- -C passes=sancov \
341
+ -C passes={} \
327
342
-C llvm-args=-sanitizer-coverage-level=3 \
328
343
-C llvm-args=-sanitizer-coverage-trace-pc-guard \
329
344
-C llvm-args=-sanitizer-coverage-prune-blocks=0 \
330
345
-C opt-level=3 \
331
346
-C target-cpu=native \
332
347
-C debuginfo=0 \
333
348
-L {} ",
349
+ passes,
334
350
common:: afl_llvm_rt_dir( ) . display( )
335
351
) ;
336
352
0 commit comments