This is complementary to the "STATIC_ANALYSIS" macro defined in
"internal.h", but not as straight-forward to detect:
clang defines "__has_feature(address_sanitizer)" if the address
sanitizer is enabled. "__has_feature" is clang specific and does not
exist in gcc (see
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60512)
gcc, depending on the version, defines "__SANITIZE_ADDRESS__ 1" if
compiled with the address sanitizer enabled. No similar macro is
defined for the undefined behavior sanitizer.
Instead, let meson set this symbol.
Signed-off-by: Tim Wiederhake <twiederh(a)redhat.com>
---
meson.build | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/meson.build b/meson.build
index e25dc17fc8..2c424076ba 100644
--- a/meson.build
+++ b/meson.build
@@ -224,6 +224,10 @@ alloc_max = run_command(
'print(min(2**(@0@ * 8 - 1) - 1, 2**(@1@ * 8) - 1))'.format(ptrdiff_max,
size_max),
)
+if (get_option('b_sanitize') != 'none')
+ conf.set('DYNAMIC_ANALYSIS', 1)
+endif
+
# sanitizer instrumentation may enlarge stack frames
stack_frame_size = get_option('b_sanitize') == 'none' ? 4096 : 8192
--
2.31.1