From c7838a6dd11d37bef646cd93d3ffaf11a9a9c176 Mon Sep 17 00:00:00 2001 From: Ken Dreyer Date: Tue, 13 Sep 2022 16:18:36 -0400 Subject: [PATCH] cmake: add -fstack-protector-strong on win32 mingw on RHEL 9 needs -fstack-protector (which adds -lssp), or it fails with these errors: undefined reference to `__stack_chk_fail' undefined reference to `__stack_chk_guard' undefined reference to `__strcpy_chk' Commit 8d35b2eceabafbe13458101f8701e3fc49f15d63 mentions that the build fails with -fstack-protector-strong. Perhaps that only applied to earlier Ubuntu versions, because Ubuntu Focal can build with -fstack-protector-strong now. Signed-off-by: Ken Dreyer --- src/CMakeLists.txt | 5 +++-- win32_build.sh | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8d6add4666b1..5827968d8c8b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -184,12 +184,13 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL GNU) -D_FORTIFY_SOURCE=2) endif() endif() - if(NOT WIN32) CHECK_C_COMPILER_FLAG(-fstack-protector-strong HAS_STACK_PROTECT) if (HAS_STACK_PROTECT) add_compile_options(-fstack-protector-strong) + if(WIN32) + add_link_options(-fstack-protector-strong) + endif(WIN32) endif() - endif(NOT WIN32) endif(CMAKE_CXX_COMPILER_ID STREQUAL GNU) CHECK_C_COMPILER_FLAG("-D_GLIBCXX_ASSERTIONS" HAS_GLIBCXX_ASSERTIONS) diff --git a/win32_build.sh b/win32_build.sh index d6fc366e4a90..2b84851ce8f6 100755 --- a/win32_build.sh +++ b/win32_build.sh @@ -212,6 +212,7 @@ if [[ -z $SKIP_DLL_COPY ]]; then $sslDir/bin/libssl-1_1-x64.dll $mingwTargetLibDir/libstdc++-6.dll $mingwTargetLibDir/libgcc_s_seh-1.dll + $mingwTargetLibDir/libssp*.dll $mingwLibpthreadDir/libwinpthread-1.dll $boostDir/lib/*.dll) echo "Copying required dlls to $binDir." -- 2.47.3