Pārlūkot izejas kodu

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.
Brian Gianforcaro 4 gadi atpakaļ
vecāks
revīzija
f43423edc3
1 mainītis faili ar 6 papildinājumiem un 2 dzēšanām
  1. 6 2
      Kernel/CMakeLists.txt

+ 6 - 2
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")