From: Ken Dreyer Date: Tue, 13 Sep 2022 20:18:36 +0000 (-0400) Subject: cmake: add -fstack-protector-strong on win32 X-Git-Tag: v18.1.0~1096^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F48259%2Fhead;p=ceph.git 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 --- 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."