diff --git a/CMakeLists.txt b/CMakeLists.txt index 40ec4aa8f..357ee6954 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,10 +42,13 @@ include(DuckStationDependencies) include(DuckStationCompilerRequirement) # Enable PIC on Linux, otherwise the builds do not support ASLR. +# Also force immediate binding of all symbols, glibc and its +# xsave/xrstor on first shared library call is bonkers. if(LINUX OR BSD) include(CheckPIESupported) check_pie_supported() set(CMAKE_POSITION_INDEPENDENT_CODE TRUE) + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,now,-z,relro") endif() # Force debug symbols for Linux builds. diff --git a/CMakeModules/DuckStationBuildSummary.cmake b/CMakeModules/DuckStationBuildSummary.cmake index f3ad0bc51..60de622f8 100644 --- a/CMakeModules/DuckStationBuildSummary.cmake +++ b/CMakeModules/DuckStationBuildSummary.cmake @@ -8,6 +8,7 @@ message(STATUS "Build Type: ${CMAKE_BUILD_TYPE}") string(TOUPPER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_UPPER) message(STATUS "C Flags: ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE_UPPER}}") message(STATUS "CXX Flags: ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE_UPPER}}") +message(STATUS "Linker Flags: ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_${CMAKE_BUILD_TYPE_UPPER}}") if(ENABLE_OPENGL) message(STATUS "Building with OpenGL support.")