From 79d11422526c46e4bae0d2b920110bbbb44d9c70 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Tue, 10 Nov 2020 22:59:44 +0100 Subject: Add CI row to run clang sanitizers Some of these are also supported by GCC, but clang supports more and clang on Linux was uncovered before anyway, so this fixes that situation as well. --- .gitlab-ci.yml | 18 ++++++++++++++++++ wscript | 6 ++++++ 2 files changed, 24 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 47c96038..406dcf3d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -115,6 +115,24 @@ test:x64_static: needs: ["x64_static"] +x64_sanitize: + <<: *build_definition + image: lv2plugin/debian-x64-clang + script: python ./waf configure build -ST --werror + variables: + CC: "clang" + CFLAGS: "-fsanitize=address -fsanitize=undefined -fsanitize=float-divide-by-zero -fsanitize=unsigned-integer-overflow -fsanitize=implicit-conversion -fsanitize=local-bounds -fsanitize=nullability" + CXX: "clang++" + CXXFLAGS: "-fsanitize=address -fsanitize=undefined -fsanitize=float-divide-by-zero -fsanitize=unsigned-integer-overflow -fsanitize=implicit-conversion -fsanitize=local-bounds -fsanitize=nullability" + LINKFLAGS: "-fsanitize=address -fsanitize=undefined -fsanitize=float-divide-by-zero -fsanitize=unsigned-integer-overflow -fsanitize=implicit-conversion -fsanitize=local-bounds -fsanitize=nullability" + +test:x64_sanitize: + <<: *test_definition + image: lv2plugin/debian-x64-clang + script: python ./waf test + needs: ["x64_sanitize"] + + mingw32_dbg: <<: *build_definition image: lv2plugin/debian-mingw32 diff --git a/wscript b/wscript index bc21d526..faeaadaa 100644 --- a/wscript +++ b/wscript @@ -55,6 +55,7 @@ def configure(conf): 'clang': [ '-Wno-cast-align', '-Wno-cast-qual', + '-Wno-conversion', '-Wno-covered-switch-default', '-Wno-disabled-macro-expansion', '-Wno-double-promotion', @@ -101,6 +102,11 @@ def configure(conf): if 'mingw' in conf.env.CC[0]: conf.env.append_value('CFLAGS', '-Wno-unused-macros') + if ('clang' in conf.env.CC[0] and ( + '-fsanitize=address' in conf.env.CFLAGS or + '-fsanitize=undefined' in conf.env.CFLAGS)): + conf.env.LINKFLAGS.remove('-Wl,--no-undefined') + conf.env.update({ 'BUILD_UTILS': not Options.options.no_utils, 'BUILD_SHARED': not Options.options.no_shared, -- cgit v1.2.1