Index: build/config/sanitizers/sanitizers.gni |
diff --git a/build/config/sanitizers/sanitizers.gni b/build/config/sanitizers/sanitizers.gni |
index 1aa212deab712df718a92d6bf0e00315348d2ab3..84348da425ae90a53e5f74edbf7709f51fd1cd50 100644 |
--- a/build/config/sanitizers/sanitizers.gni |
+++ b/build/config/sanitizers/sanitizers.gni |
@@ -15,10 +15,14 @@ declare_args() { |
# Compile for Thread Sanitizer to find threading bugs. |
is_tsan = false |
+ # Compile for Undefined Behaviour Sanitizer to find various types of |
+ # undefined behaviour. |
+ is_ubsan = false |
+ |
# Use libc++ (buildtools/third_party/libc++ and |
# buildtools/third_party/libc++abi) instead of stdlibc++ as standard library. |
# This is intended to be used for instrumented builds. |
- use_custom_libcxx = (is_asan && is_linux) || is_tsan || is_msan |
+ use_custom_libcxx = (is_asan && is_linux) || is_tsan || is_msan || is_ubsan |
# Track where uninitialized memory originates from. From fastest to slowest: |
# 0 - no tracking, 1 - track only the initial allocation site, 2 - track the |
@@ -45,7 +49,7 @@ declare_args() { |
} |
# TODO(GYP) bug 527515: is_ubsan, is_ubsan_vptr |
-using_sanitizer = is_asan || is_lsan || is_tsan || is_msan |
+using_sanitizer = is_asan || is_lsan || is_tsan || is_msan || is_ubsan |
assert(!using_sanitizer || is_clang, |
"Sanitizers (is_*san) require setting is_clang = true in 'gn args'") |
@@ -63,5 +67,5 @@ assert(!using_sanitizer || is_clang, |
# unsupported or unadvisable configurations. |
# |
# For one-off testing, just comment this assertion out. |
-assert(!is_debug || !(is_msan || is_lsan || is_tsan), |
+assert(!is_debug || !(is_msan || is_lsan || is_tsan || is_ubsan), |
"Sanitizers should generally be used in release (set is_debug=false).") |