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 <kdreyer@redhat.com>
This commit is contained in:
Ken Dreyer 2022-09-13 16:18:36 -04:00
parent 3eea1e1750
commit c7838a6dd1
2 changed files with 4 additions and 2 deletions

View File

@ -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)

View File

@ -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."