diff --git a/cmake/3rdparty/extra-cmake-modules/0001-ECMEnableSanitizers.cmake-fix-GCC-s-note-variable-tr.patch b/cmake/3rdparty/extra-cmake-modules/0001-ECMEnableSanitizers.cmake-fix-GCC-s-note-variable-tr.patch new file mode 100644 index 00000000000..e9eed794c00 --- /dev/null +++ b/cmake/3rdparty/extra-cmake-modules/0001-ECMEnableSanitizers.cmake-fix-GCC-s-note-variable-tr.patch @@ -0,0 +1,45 @@ +From cbda7ce74d74539ce0baef4a36198081dfb0265c Mon Sep 17 00:00:00 2001 +From: Marc Mutz +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 + diff --git a/cmake/3rdparty/extra-cmake-modules/0002-ECMEnableSanitizers.cmake-replace-tabs-with-spaces.patch b/cmake/3rdparty/extra-cmake-modules/0002-ECMEnableSanitizers.cmake-replace-tabs-with-spaces.patch new file mode 100644 index 00000000000..da9e043ca46 --- /dev/null +++ b/cmake/3rdparty/extra-cmake-modules/0002-ECMEnableSanitizers.cmake-replace-tabs-with-spaces.patch @@ -0,0 +1,42 @@ +From 8907023584ea0936893269aee890af5995746af5 Mon Sep 17 00:00:00 2001 +From: Marc Mutz +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 + diff --git a/cmake/3rdparty/extra-cmake-modules/modules/ECMEnableSanitizers.cmake b/cmake/3rdparty/extra-cmake-modules/modules/ECMEnableSanitizers.cmake index 15610587bd3..8d95c69e3ad 100644 --- a/cmake/3rdparty/extra-cmake-modules/modules/ECMEnableSanitizers.cmake +++ b/cmake/3rdparty/extra-cmake-modules/modules/ECMEnableSanitizers.cmake @@ -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")