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_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")
|
||||
|
Loading…
x
Reference in New Issue
Block a user