diff options
author | David Robillard <d@drobilla.net> | 2020-11-10 22:59:44 +0100 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2020-11-11 00:09:44 +0100 |
commit | 79d11422526c46e4bae0d2b920110bbbb44d9c70 (patch) | |
tree | c2e3e397f639475c509ef48f0388b8315ad8d390 | |
parent | 9eee20ada8974e53227fa77e8dc0013ceaca88a3 (diff) | |
download | serd-79d11422526c46e4bae0d2b920110bbbb44d9c70.tar.gz serd-79d11422526c46e4bae0d2b920110bbbb44d9c70.tar.bz2 serd-79d11422526c46e4bae0d2b920110bbbb44d9c70.zip |
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.
-rw-r--r-- | .gitlab-ci.yml | 18 | ||||
-rw-r--r-- | wscript | 6 |
2 files changed, 24 insertions, 0 deletions
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 @@ -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, |