ECMEnableSanitizers.cmake: fix GCC's "note: variable tracking size limit exceeded" when using asan
Upstream pull requests: - https://invent.kde.org/frameworks/extra-cmake-modules/-/merge_requests/519 - https://invent.kde.org/frameworks/extra-cmake-modules/-/merge_requests/521 Says the commit message: > Set the max-vartrack-size parameter to 0 (= unlimited) to avoid > GCC's "note: variable tracking size limit exceeded with > -fvar-tracking-assignments, retrying without" message you get when > you compile with asan sometimes. > > This is reported¹ to speed up compilation, not slow it down. > > ¹ https://stackoverflow.com/a/75704837/134841 Pick-to: 6.8 6.5 5.15 Change-Id: I2489bbe3d3cb12cc52d7041499e38bb05c73aa3a Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 39ec71237f79f1a1aecd278b8c610e70c9cd1c67) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
1c708527fb
commit
0159e662ee
@ -0,0 +1,45 @@
|
|||||||
|
From cbda7ce74d74539ce0baef4a36198081dfb0265c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Marc Mutz <marc.mutz@qt.io>
|
||||||
|
Date: Fri, 14 Mar 2025 18:29:20 +0100
|
||||||
|
Subject: [PATCH] ECMEnableSanitizers.cmake: fix GCC's "note: variable tracking
|
||||||
|
size limit exceeded" when using asan
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Set the max-vartrack-size parameter to 0 (= unlimited) to avoid GCC's
|
||||||
|
"note: variable tracking size limit exceeded with
|
||||||
|
-fvar-tracking-assignments, retrying without" message you get when you
|
||||||
|
compile with asan sometimes.
|
||||||
|
|
||||||
|
This is reported¹ to speed up compilation, not slow it down.
|
||||||
|
|
||||||
|
¹ https://stackoverflow.com/a/75704837/134841
|
||||||
|
---
|
||||||
|
modules/ECMEnableSanitizers.cmake | 10 ++++++++++
|
||||||
|
1 file changed, 10 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/modules/ECMEnableSanitizers.cmake b/modules/ECMEnableSanitizers.cmake
|
||||||
|
index 07db1c80..45236e6d 100644
|
||||||
|
--- a/modules/ECMEnableSanitizers.cmake
|
||||||
|
+++ b/modules/ECMEnableSanitizers.cmake
|
||||||
|
@@ -117,6 +117,16 @@ macro (enable_sanitizer_flags sanitize_option)
|
||||||
|
set(XSAN_COMPILE_FLAGS "-fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls")
|
||||||
|
set(XSAN_LINKER_FLAGS "asan")
|
||||||
|
endif()
|
||||||
|
+ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||||
|
+ # fixes "note: variable tracking size limit exceeded with
|
||||||
|
+ # -fvar-tracking-assignments, retrying without" (which is
|
||||||
|
+ # another way of saying "I'll go ahead and compile this
|
||||||
|
+ # thing _twice_") by making it unlimited
|
||||||
|
+ # Reference:
|
||||||
|
+ # https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
|
||||||
|
+ # -> max-vartrack-size
|
||||||
|
+ string(APPEND XSAN_COMPILE_FLAGS " --param=max-vartrack-size=0")
|
||||||
|
+ endif ()
|
||||||
|
elseif (${sanitize_option} MATCHES "thread")
|
||||||
|
check_compiler_version("4.8" "3.1" "99.99")
|
||||||
|
set(XSAN_COMPILE_FLAGS "-fsanitize=thread")
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
42
cmake/3rdparty/extra-cmake-modules/0002-ECMEnableSanitizers.cmake-replace-tabs-with-spaces.patch
vendored
Normal file
42
cmake/3rdparty/extra-cmake-modules/0002-ECMEnableSanitizers.cmake-replace-tabs-with-spaces.patch
vendored
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
From 8907023584ea0936893269aee890af5995746af5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Marc Mutz <marc.mutz@qt.io>
|
||||||
|
Date: Mon, 17 Mar 2025 10:15:03 +0100
|
||||||
|
Subject: [PATCH] ECMEnableSanitizers.cmake: replace tabs with spaces
|
||||||
|
|
||||||
|
Amends cbda7ce74d74539ce0baef4a36198081dfb0265c.
|
||||||
|
---
|
||||||
|
modules/ECMEnableSanitizers.cmake | 18 +++++++++---------
|
||||||
|
1 file changed, 9 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/modules/ECMEnableSanitizers.cmake b/modules/ECMEnableSanitizers.cmake
|
||||||
|
index 45236e6d..8686384d 100644
|
||||||
|
--- a/modules/ECMEnableSanitizers.cmake
|
||||||
|
+++ b/modules/ECMEnableSanitizers.cmake
|
||||||
|
@@ -118,15 +118,15 @@ macro (enable_sanitizer_flags sanitize_option)
|
||||||
|
set(XSAN_LINKER_FLAGS "asan")
|
||||||
|
endif()
|
||||||
|
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||||
|
- # fixes "note: variable tracking size limit exceeded with
|
||||||
|
- # -fvar-tracking-assignments, retrying without" (which is
|
||||||
|
- # another way of saying "I'll go ahead and compile this
|
||||||
|
- # thing _twice_") by making it unlimited
|
||||||
|
- # Reference:
|
||||||
|
- # https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
|
||||||
|
- # -> max-vartrack-size
|
||||||
|
- string(APPEND XSAN_COMPILE_FLAGS " --param=max-vartrack-size=0")
|
||||||
|
- endif ()
|
||||||
|
+ # fixes "note: variable tracking size limit exceeded with
|
||||||
|
+ # -fvar-tracking-assignments, retrying without" (which is
|
||||||
|
+ # another way of saying "I'll go ahead and compile this
|
||||||
|
+ # thing _twice_") by making it unlimited
|
||||||
|
+ # Reference:
|
||||||
|
+ # https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
|
||||||
|
+ # -> max-vartrack-size
|
||||||
|
+ string(APPEND XSAN_COMPILE_FLAGS " --param=max-vartrack-size=0")
|
||||||
|
+ endif ()
|
||||||
|
elseif (${sanitize_option} MATCHES "thread")
|
||||||
|
check_compiler_version("4.8" "3.1" "99.99")
|
||||||
|
set(XSAN_COMPILE_FLAGS "-fsanitize=thread")
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -118,6 +118,16 @@ macro (enable_sanitizer_flags sanitize_option)
|
|||||||
set(XSAN_COMPILE_FLAGS "-fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls")
|
set(XSAN_COMPILE_FLAGS "-fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls")
|
||||||
set(XSAN_LINKER_FLAGS "asan")
|
set(XSAN_LINKER_FLAGS "asan")
|
||||||
endif()
|
endif()
|
||||||
|
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
|
||||||
|
# fixes "note: variable tracking size limit exceeded with
|
||||||
|
# -fvar-tracking-assignments, retrying without" (which is
|
||||||
|
# another way of saying "I'll go ahead and compile this
|
||||||
|
# thing _twice_") by making it unlimited
|
||||||
|
# Reference:
|
||||||
|
# https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
|
||||||
|
# -> max-vartrack-size
|
||||||
|
string(APPEND XSAN_COMPILE_FLAGS " --param=max-vartrack-size=0")
|
||||||
|
endif ()
|
||||||
elseif (${sanitize_option} MATCHES "thread")
|
elseif (${sanitize_option} MATCHES "thread")
|
||||||
check_compiler_version("4.8" "3.1" "99.99")
|
check_compiler_version("4.8" "3.1" "99.99")
|
||||||
set(XSAN_COMPILE_FLAGS "-fsanitize=thread")
|
set(XSAN_COMPILE_FLAGS "-fsanitize=thread")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user