diff options
author | Gary Lockyer <gary@catalyst.net.nz> | 2019-05-14 11:25:07 +1200 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2019-05-14 07:20:28 +0000 |
commit | b1a32dd7f50ed0aee3d0eea5a124cb8ddfa417ad (patch) | |
tree | 4447f92b73f3c345ffc0cb299347091772a7be04 /selftest | |
parent | b0cc6d217485c317b2138347216fac5d74684328 (diff) | |
download | samba-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.supp | 6 | ||||
-rw-r--r-- | selftest/wscript | 11 |
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: |