Skip to content

Commit 3b77f15

Browse files
authored
Add asan-ubsan instrumentation option (#231)
This option combines ASan with UBSan, which is very useful for running the replay tests as well as while iterating on a fuzz test locally.
1 parent dff339f commit 3b77f15

File tree

4 files changed

+23
-0
lines changed

4 files changed

+23
-0
lines changed

.bazelrc

+10
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@ build:ubsan-libfuzzer --//fuzzing:cc_engine=//fuzzing/engines:libfuzzer
4646
build:ubsan-libfuzzer --@rules_fuzzing//fuzzing:cc_engine_instrumentation=libfuzzer
4747
build:ubsan-libfuzzer --@rules_fuzzing//fuzzing:cc_engine_sanitizer=ubsan
4848

49+
# LibFuzzer + ASAN + UBSAN
50+
build:asan-ubsan-libfuzzer --//fuzzing:cc_engine=//fuzzing/engines:libfuzzer
51+
build:asan-ubsan-libfuzzer --@rules_fuzzing//fuzzing:cc_engine_instrumentation=libfuzzer
52+
build:asan-ubsan-libfuzzer --@rules_fuzzing//fuzzing:cc_engine_sanitizer=asan-ubsan
53+
4954
# Honggfuzz + ASAN
5055
build:asan-honggfuzz --//fuzzing:cc_engine=//fuzzing/engines:honggfuzz
5156
build:asan-honggfuzz --@rules_fuzzing//fuzzing:cc_engine_instrumentation=honggfuzz
@@ -66,6 +71,11 @@ build:asan-replay --//fuzzing:cc_engine=//fuzzing/engines:replay
6671
build:asan-replay --@rules_fuzzing//fuzzing:cc_engine_instrumentation=none
6772
build:asan-replay --@rules_fuzzing//fuzzing:cc_engine_sanitizer=asan
6873

74+
# Replay + ASAN + UBSAN
75+
build:asan-ubsan-replay --//fuzzing:cc_engine=//fuzzing/engines:replay
76+
build:asan-ubsan-replay --@rules_fuzzing//fuzzing:cc_engine_instrumentation=none
77+
build:asan-ubsan-replay --@rules_fuzzing//fuzzing:cc_engine_sanitizer=asan-ubsan
78+
6979
build:oss-fuzz --//fuzzing:cc_engine=@rules_fuzzing_oss_fuzz//:oss_fuzz_engine
7080
build:oss-fuzz --//fuzzing:java_engine=@rules_fuzzing_oss_fuzz//:oss_fuzz_java_engine
7181
build:oss-fuzz --@rules_fuzzing//fuzzing:cc_engine_instrumentation=oss-fuzz

docs/guide.md

+10
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,11 @@ build:ubsan-libfuzzer --@rules_fuzzing//fuzzing:cc_engine=@rules_fuzzing//fuzzin
186186
build:ubsan-libfuzzer --@rules_fuzzing//fuzzing:cc_engine_instrumentation=libfuzzer
187187
build:ubsan-libfuzzer --@rules_fuzzing//fuzzing:cc_engine_sanitizer=ubsan
188188
189+
# --config=asan-ubsan-libfuzzer
190+
build:asan-ubsan-libfuzzer --@rules_fuzzing//fuzzing:cc_engine=@rules_fuzzing//fuzzing/engines:libfuzzer
191+
build:asan-ubsan-libfuzzer --@rules_fuzzing//fuzzing:cc_engine_instrumentation=libfuzzer
192+
build:asan-ubsan-libfuzzer --@rules_fuzzing//fuzzing:cc_engine_sanitizer=asan-ubsan
193+
189194
# --config=asan-honggfuzz
190195
build:asan-honggfuzz --@rules_fuzzing//fuzzing:cc_engine=@rules_fuzzing//fuzzing/engines:honggfuzz
191196
build:asan-honggfuzz --@rules_fuzzing//fuzzing:cc_engine_instrumentation=honggfuzz
@@ -206,6 +211,11 @@ build:asan-replay --@rules_fuzzing//fuzzing:cc_engine=@rules_fuzzing//fuzzing/en
206211
build:asan-replay --@rules_fuzzing//fuzzing:cc_engine_instrumentation=none
207212
build:asan-replay --@rules_fuzzing//fuzzing:cc_engine_sanitizer=asan
208213
214+
# --config=asan-ubsan-replay
215+
build:asan-ubsan-replay --@rules_fuzzing//fuzzing:cc_engine=@rules_fuzzing//fuzzing/engines:replay
216+
build:asan-ubsan-replay --@rules_fuzzing//fuzzing:cc_engine_instrumentation=none
217+
build:asan-ubsan-replay --@rules_fuzzing//fuzzing:cc_engine_sanitizer=asan-ubsan
218+
209219
# --config=jazzer (Jazzer without sanitizer - Java only)
210220
build:jazzer --@rules_fuzzing//fuzzing:java_engine=@rules_fuzzing//fuzzing/engines:jazzer
211221
build:jazzer --@rules_fuzzing//fuzzing:cc_engine_instrumentation=jazzer

fuzzing/BUILD

+2
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ string_flag(
5757
# Undefined Behavior sanitizer (UBSAN).
5858
# See https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html
5959
"ubsan",
60+
# ASAN + UBSAN in a single build.
61+
"asan-ubsan",
6062
],
6163
visibility = ["//visibility:public"],
6264
)

fuzzing/instrum_opts.bzl

+1
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,5 @@ sanitizer_configs = {
4545
"msan": instrum_defaults.msan,
4646
"msan-origin-tracking": instrum_defaults.msan_origin_tracking,
4747
"ubsan": instrum_defaults.ubsan,
48+
"asan-ubsan": instrum_opts.merge(instrum_defaults.asan, instrum_defaults.ubsan),
4849
}

0 commit comments

Comments
 (0)