diff options
author | Ivan Komissarov <abbapoh@gmail.com> | 2023-01-22 14:06:45 +0300 |
---|---|---|
committer | Ivan Komissarov <ABBAPOH@gmail.com> | 2023-01-31 12:54:04 +0000 |
commit | 4e8f377f1844bbb2f5ed7cb4481d6e30a6335da5 (patch) | |
tree | e97cff507b205ddc6d56e0cf7ef4899d29b704b1 | |
parent | 697d39b141ecc86414c401766770caf887745e85 (diff) |
GitHub actions: add UBSAN job
Change-Id: Ib98b51305b491f3c1b54af2bf03738df08c5f789
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r-- | .github/workflows/main.yml | 10 | ||||
-rw-r--r-- | qbs-resources/modules/qbsbuildconfig/qbsbuildconfig.qbs | 4 | ||||
-rwxr-xr-x | scripts/build-qbs-with-qbs.sh | 1 | ||||
-rw-r--r-- | scripts/undefined-sanitizer-suppressions.txt | 3 |
4 files changed, 17 insertions, 1 deletions
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e22d7156d..c2ba74cfa 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -95,6 +95,16 @@ jobs: modules.qbsbuildconfig.enableBundledQt:true', cacheid: 'gcc-asan', } + - { + name: 'Build on Linux (gcc, UBSAN)', + image: 'focal', + script: './scripts/build-qbs-with-qbs.sh', + options: 'modules.cpp.compilerWrapper:ccache + modules.qbsbuildconfig.enableUbSanitizer:true + modules.qbs.debugInformation:true + modules.qbsbuildconfig.enableBundledQt:true', + cacheid: 'gcc-ubsan', + } env: BUILD_OPTIONS: ${{ matrix.config.options }} QTEST_FUNCTION_TIMEOUT: 9000000 diff --git a/qbs-resources/modules/qbsbuildconfig/qbsbuildconfig.qbs b/qbs-resources/modules/qbsbuildconfig/qbsbuildconfig.qbs index 28104b55b..0c548bf6d 100644 --- a/qbs-resources/modules/qbsbuildconfig/qbsbuildconfig.qbs +++ b/qbs-resources/modules/qbsbuildconfig/qbsbuildconfig.qbs @@ -70,8 +70,10 @@ Module { var flags = []; if (enableAddressSanitizer) flags.push("-fsanitize=address"); - if (enableUbSanitizer) + if (enableUbSanitizer) { flags.push("-fsanitize=undefined"); + flags.push("-fno-sanitize=vptr"); + } if (enableThreadSanitizer) flags.push("-fsanitize=thread"); return flags; diff --git a/scripts/build-qbs-with-qbs.sh b/scripts/build-qbs-with-qbs.sh index b26dcc7b5..327d63acf 100755 --- a/scripts/build-qbs-with-qbs.sh +++ b/scripts/build-qbs-with-qbs.sh @@ -44,6 +44,7 @@ set -e # Suppress findings in some parts of Qbs / dependencies. # export LSAN_OPTIONS="suppressions=$( cd "$(dirname "$0")" ; pwd -P )/address-sanitizer-suppressions.txt:print_suppressions=0" +export UBSAN_OPTIONS="suppressions=$( cd "$(dirname "$0")" ; pwd -P )/undefined-sanitizer-suppressions.txt" if [ -z "${QBS_BUILD_PROFILE}" ]; then QBS_BUILD_PROFILE=$(qbs config defaultProfile | cut -d: -f2 | tr -d '[:space:]') diff --git a/scripts/undefined-sanitizer-suppressions.txt b/scripts/undefined-sanitizer-suppressions.txt new file mode 100644 index 000000000..87f74533d --- /dev/null +++ b/scripts/undefined-sanitizer-suppressions.txt @@ -0,0 +1,3 @@ +shift:SymbolTable.h +alignment:qscriptengine_p.h + |