aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIvan Komissarov <abbapoh@gmail.com>2023-01-22 14:06:45 +0300
committerIvan Komissarov <ABBAPOH@gmail.com>2023-01-31 12:54:04 +0000
commit4e8f377f1844bbb2f5ed7cb4481d6e30a6335da5 (patch)
treee97cff507b205ddc6d56e0cf7ef4899d29b704b1
parent697d39b141ecc86414c401766770caf887745e85 (diff)
GitHub actions: add UBSAN job
Change-Id: Ib98b51305b491f3c1b54af2bf03738df08c5f789 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r--.github/workflows/main.yml10
-rw-r--r--qbs-resources/modules/qbsbuildconfig/qbsbuildconfig.qbs4
-rwxr-xr-xscripts/build-qbs-with-qbs.sh1
-rw-r--r--scripts/undefined-sanitizer-suppressions.txt3
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
+