From f43423edc38e77559deaf3c96e36c8066abd8e42 Mon Sep 17 00:00:00 2001 From: Brian Gianforcaro Date: Sun, 25 Jul 2021 13:56:06 -0700 Subject: [PATCH] Build: Only specify -fzero-call-used-regs with compiler >= GCC 11.1 This fixes the use case of using clang, or building inside CLion with an older host compiler. --- Kernel/CMakeLists.txt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Kernel/CMakeLists.txt b/Kernel/CMakeLists.txt index 9f4a4e96a8..87f0083fb7 100644 --- a/Kernel/CMakeLists.txt +++ b/Kernel/CMakeLists.txt @@ -347,10 +347,14 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mno-80387 -mno-mmx -mno-sse -mno-sse2") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-asynchronous-unwind-tables") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector-strong") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions") -# Zero any registers used within a function on return (to reduce data lifetime and ROP gadgets). -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fzero-call-used-regs=used-gpr") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -nostdlib -nostdinc -nostdinc++") +# Apply any flags that are only available on >= GCC 11.1 +if (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 11.1) + # Zero any registers used within a function on return (to reduce data lifetime and ROP gadgets). + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fzero-call-used-regs=used-gpr") +endif() + if ("${SERENITY_ARCH}" STREQUAL "x86_64") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcmodel=large -mno-red-zone") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -faligned-new=8")