summaryrefslogtreecommitdiff
path: root/selftest
diff options
context:
space:
mode:
authorGary Lockyer <gary@catalyst.net.nz>2019-05-14 11:25:07 +1200
committerAndrew Bartlett <abartlet@samba.org>2019-05-14 07:20:28 +0000
commitb1a32dd7f50ed0aee3d0eea5a124cb8ddfa417ad (patch)
tree4447f92b73f3c345ffc0cb299347091772a7be04 /selftest
parentb0cc6d217485c317b2138347216fac5d74684328 (diff)
downloadsamba-b1a32dd7f50ed0aee3d0eea5a124cb8ddfa417ad.tar.gz
selftest: enable undefined behaviour sanitizer
Add a --undefined-sanitizer option to configure, this causes the tests to be run with the undefined behaviout sanitizer enabled. Errors can be suppressed by adding entries to selftest/ubsan.supp Signed-off-by: Gary Lockyer <gary@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Autobuild-User(master): Andrew Bartlett <abartlet@samba.org> Autobuild-Date(master): Tue May 14 07:20:28 UTC 2019 on sn-devel-184
Diffstat (limited to 'selftest')
-rw-r--r--selftest/ubsan.supp6
-rw-r--r--selftest/wscript11
2 files changed, 15 insertions, 2 deletions
diff --git a/selftest/ubsan.supp b/selftest/ubsan.supp
new file mode 100644
index 00000000000..423e0838690
--- /dev/null
+++ b/selftest/ubsan.supp
@@ -0,0 +1,6 @@
+# Suppress the
+# "left shift of x by y places cannot be represented in type 'int'"
+# in the heimdal code for now.
+shift-base:../../source4/heimdal/lib/hcrypto/des.c
+shift-base:../../source4/heimdal/lib/krb5/crypto.c
+
diff --git a/selftest/wscript b/selftest/wscript
index 5116d7ee31b..5c864ebed96 100644
--- a/selftest/wscript
+++ b/selftest/wscript
@@ -265,8 +265,9 @@ def cmd_testonly(opt):
if env.ADDRESS_SANITIZER:
# We try to find the correct libasan automatically
- libasan = Utils.cmd_output('ldd bin/texpect | grep libasan| cut -f 3 -d \ ',
- silent=True).strip()
+ libasan = Utils.cmd_output(
+ 'ldd bin/texpect | grep libasan| cut -f 3 -d \ ',
+ silent=True).strip()
libasan = libasan.decode('utf8')
# Have the selftest.pl LD_PRELOAD libasan in the right spot
@@ -290,6 +291,12 @@ def cmd_testonly(opt):
env.FILTER_OPTIONS = asan_envs + env.FILTER_OPTIONS
env.SUBUNIT_FORMATTER = asan_envs + env.SUBUNIT_FORMATTER
+ if env.UNDEFINED_SANITIZER:
+ # print a stack trace with the error.
+ print_stack_trace = "UBSAN_OPTIONS=print_stacktrace=1"
+ print_stack_trace += ",suppressions=${srcdir}/selftest/ubsan.supp"
+ env.CORE_COMMAND = print_stack_trace + " " + env.CORE_COMMAND
+
if Options.options.LIST:
cmd = '${CORE_COMMAND} --list'
else: