diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 075286e51f9a6312927756af4357ad251062f717_LmdpdGxhYi1jaS55bWw=..9001c7f5542b7f9c44b14bb179167440fd5dbbef_LmdpdGxhYi1jaS55bWw= 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -24,7 +24,9 @@ clang:asan: extends: .test + tags: + - asan variables: CONFIG: "--without-python" CC: clang CFLAGS: "-O2 -g -fno-omit-frame-pointer -fsanitize=address,undefined,unsigned-integer-overflow,implicit-conversion -fno-sanitize-recover=all -Wno-error=cast-align" @@ -27,7 +29,5 @@ variables: CONFIG: "--without-python" CC: clang CFLAGS: "-O2 -g -fno-omit-frame-pointer -fsanitize=address,undefined,unsigned-integer-overflow,implicit-conversion -fno-sanitize-recover=all -Wno-error=cast-align" - # LeakSanitizer requires SYS_CAP_PTRACE - ASAN_OPTIONS: "detect_leaks=0" UBSAN_OPTIONS: "print_stacktrace=1" @@ -33,2 +33,3 @@ UBSAN_OPTIONS: "print_stacktrace=1" + ASAN_SYMBOLIZER_PATH: "$CI_PROJECT_DIR/.gitlab-ci/llvm-symbolizer" @@ -34,4 +35,3 @@ -# Disabled, MSan seems broken on Ubntu 22.04 -.clang:msan: +clang:msan: extends: .test @@ -37,6 +37,4 @@ extends: .test - only: - - schedules variables: CONFIG: "--without-python --without-zlib --without-lzma --without-crypto" CC: clang @@ -40,7 +38,8 @@ variables: CONFIG: "--without-python --without-zlib --without-lzma --without-crypto" CC: clang - CFLAGS: "-O2 -g -fno-omit-frame-pointer -fsanitize=memory -Wimplicit-int-conversion -Wno-error=cast-align" + CFLAGS: "-O2 -g -fno-omit-frame-pointer -fsanitize=memory -Wno-error=cast-align" + MSAN_SYMBOLIZER_PATH: "$CI_PROJECT_DIR/.gitlab-ci/llvm-symbolizer" .mingw: tags: diff --git a/.gitlab-ci/llvm-symbolizer b/.gitlab-ci/llvm-symbolizer new file mode 100755 index 0000000000000000000000000000000000000000..9001c7f5542b7f9c44b14bb179167440fd5dbbef_LmdpdGxhYi1jaS9sbHZtLXN5bWJvbGl6ZXI= --- /dev/null +++ b/.gitlab-ci/llvm-symbolizer @@ -0,0 +1,9 @@ +#!/bin/sh + +# Newer versions of llvm-symbolizer require libxml2 themselves. Running +# a test program with LD_LIBRARY_PATH set to .libs makes llvm-symbolizer +# pick up the tested development version of libxml2 which breaks +# completely if the build is instrumented with ASan. This wrapper script +# invokes llvm-symbolizer with an empty LD_LIBRARY_PATH. + +LD_LIBRARY_PATH='' llvm-symbolizer "$@"