Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Always build with UBSan #192

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ stages:
matrix:
LinuxRelease:
imageName: 'ubuntu-latest'
QMAKE_EXTRA: "CONFIG+=noPch CONFIG+=ccache CONFIG+=no-sanitizers CONFIG+=silent CONFIG+=warn_off"
QMAKE_EXTRA: "CONFIG+=noPch CONFIG+=ccache CONFIG+=silent CONFIG+=warn_off"
LinuxDebug:
imageName: 'ubuntu-latest'
QMAKE_EXTRA: "CONFIG+=noPch CONFIG+=ccache CONFIG+=silent CONFIG+=small_debug_info CONFIG+=sanitizer CONFIG+=sanitize_undefined CONFIG+=sanitize_address"
Expand All @@ -145,7 +145,7 @@ stages:
matrix:
macOSRelease:
imageName: 'macOS-11'
QMAKE_EXTRA: "CONFIG+=noPch CONFIG+=ccache CONFIG+=no-sanitizers CONFIG+=silent CONFIG+=warn_off"
QMAKE_EXTRA: "CONFIG+=noPch CONFIG+=ccache CONFIG+=silent CONFIG+=warn_off"
EXECUTOR: "time"
macOSDebug:
imageName: 'macOS-11'
Expand All @@ -172,10 +172,10 @@ stages:
matrix:
Linux release + tests:
imageName: 'ubuntu-latest'
QMAKE_EXTRA: "CONFIG+=tests CONFIG+=noPch CONFIG+=ccache CONFIG+=no-sanitizers CONFIG+=silent CONFIG+=warn_off"
QMAKE_EXTRA: "CONFIG+=tests CONFIG+=noPch CONFIG+=ccache CONFIG+=silent CONFIG+=warn_off"
Linux release with retired features:
imageName: 'ubuntu-latest'
QMAKE_EXTRA: "CONFIG+=trik_retired_features CONFIG+=noPch CONFIG+=ccache CONFIG+=no-sanitizers CONFIG+=silent"
QMAKE_EXTRA: "CONFIG+=trik_retired_features CONFIG+=noPch CONFIG+=ccache CONFIG+=silent"
Linux debug + tests:
imageName: 'ubuntu-latest'
QMAKE_EXTRA: "CONFIG+=tests CONFIG+=noPch CONFIG+=ccache CONFIG+=silent CONFIG+=small_debug_info CONFIG+=sanitizer CONFIG+=sanitize_undefined CONFIG+=sanitize_address"
Expand All @@ -200,7 +200,7 @@ stages:
matrix:
MacOS release + tests:
imageName: 'macOS-11'
QMAKE_EXTRA: "CONFIG+=tests CONFIG+=noPch CONFIG+=ccache CONFIG+=no-sanitizers CONFIG+=silent CONFIG+=warn_off"
QMAKE_EXTRA: "CONFIG+=tests CONFIG+=noPch CONFIG+=ccache CONFIG+=silent CONFIG+=warn_off"
EXECUTOR: "time"
macOS debug + tests:
imageName: 'macOS-11'
Expand All @@ -225,7 +225,7 @@ stages:
- job: installer
displayName: "Test, installer, deploy"
variables:
QMAKE_EXTRA: "CONFIG+=noPch CONFIG+=ccache CONFIG+=no-sanitizers CONFIG+=silent CONFIG+=warn_off"
QMAKE_EXTRA: "CONFIG+=noPch CONFIG+=ccache CONFIG+=silent CONFIG+=warn_off"
pool:
vmImage: 'ubuntu-latest'

Expand All @@ -246,7 +246,7 @@ stages:
- job: installer
displayName: "Test, installer, deploy"
variables:
QMAKE_EXTRA: "CONFIG+=noPch CONFIG+=ccache CONFIG+=no-sanitizers CONFIG+=silent CONFIG+=warn_off"
QMAKE_EXTRA: "CONFIG+=noPch CONFIG+=ccache CONFIG+=silent CONFIG+=warn_off"
EXECUTOR: "time"
pool:
vmImage: 'macOS-11'
Expand Down
42 changes: 24 additions & 18 deletions global.pri
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ equals(TEMPLATE, lib) {
CONFIG += sanitizer
}

unix:!nosanitizers {
!nosanitizers {

# seems like we want USan always, but are afraid of ....
!CONFIG(sanitize_address):!CONFIG(sanitize_thread):!CONFIG(sanitize_memory):!CONFIG(sanitize_kernel_address) {
Expand All @@ -143,20 +143,25 @@ unix:!nosanitizers {


#LSan can be used without performance degrade even in release build
#But at the moment we can not, because of Qt problems
!macx-clang:CONFIG(debug):!CONFIG(sanitize_address):!CONFIG(sanitize_memory):!CONFIG(sanitize_thread) { CONFIG += sanitize_leak }
#But at the moment we can not, because of Qt and MinGW problems
!win32:!macx-clang:CONFIG(debug):!CONFIG(sanitize_address):!CONFIG(sanitize_memory):!CONFIG(sanitize_thread) { CONFIG += sanitize_leak }

sanitize_leak {
QMAKE_CFLAGS += -fsanitize=leak
QMAKE_CXXFLAGS += -fsanitize=leak
QMAKE_LFLAGS += -fsanitize=leak
QMAKE_CFLAGS *= -fsanitize=leak
QMAKE_CXXFLAGS *= -fsanitize=leak
QMAKE_LFLAGS *= -fsanitize=leak
}

sanitize_undefined:macx-clang {
# sometimes runtime is missing in clang. this hack allows to avoid runtime dependency.
#QMAKE_SANITIZE_UNDEFINED_CFLAGS += -fsanitize-trap=undefined
#QMAKE_SANITIZE_UNDEFINED_CXXFLAGS += -fsanitize-trap=undefined
#QMAKE_SANITIZE_UNDEFINED_LFLAGS += -fsanitize-trap=undefined
sanitize_undefined {
#TRIK_SANITIZE_UNDEFINED_FLAGS += \
#-fsanitize=undefined,float-divide-by-zero,unsigned-integer-overflow,implicit-conversion,local-bounds

# This hack allows to avoid runtime dependency.
win32:TRIK_SANITIZE_UNDEFINED_FLAGS += -fsanitize-trap=all

QMAKE_SANITIZE_UNDEFINED_CFLAGS *= $$TRIK_SANITIZE_UNDEFINED_FLAGS
QMAKE_SANITIZE_UNDEFINED_CXXFLAGS *= $$TRIK_SANITIZE_UNDEFINED_FLAGS
QMAKE_SANITIZE_UNDEFINED_LFLAGS *= $$TRIK_SANITIZE_UNDEFINED_FLAGS
}

sanitize_memory {
Expand All @@ -165,15 +170,16 @@ unix:!nosanitizers {

}

unix {
QMAKE_CFLAGS_RELEASE += -fsanitize-recover=all
QMAKE_CXXFLAGS_RELEASE += -fsanitize-recover=all

QMAKE_CFLAGS_RELEASE += -fsanitize-recover=all
QMAKE_CXXFLAGS_RELEASE += -fsanitize-recover=all
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -fno-sanitize-recover=all
QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += -fno-sanitize-recover=all

QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -fno-sanitize-recover=all
QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += -fno-sanitize-recover=all

QMAKE_CFLAGS_DEBUG += -fno-sanitize-recover=all
QMAKE_CXXFLAGS_DEBUG += -fno-sanitize-recover=all
QMAKE_CFLAGS_DEBUG += -fno-sanitize-recover=all
QMAKE_CXXFLAGS_DEBUG += -fno-sanitize-recover=all
}
}

OBJECTS_DIR = .build/$$CONFIGURATION/obj
Expand Down
Loading