1*4882a593SmuzhiyunFrom 4bb57da5fb0bb0d7e747b9e325e9ec0876ffc1f9 Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Fabrice Fontaine <fontaine.fabrice@gmail.com> 3*4882a593SmuzhiyunDate: Sat, 31 Jul 2021 16:36:50 +0200 4*4882a593SmuzhiyunSubject: [PATCH] add BUILD_WITH_STACK_PROTECTOR option 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunAdd BUILD_WITH_STACK_PROTECTOR to avoid the following build failure with 7*4882a593Smuzhiyuntoolchains that don't support stack-protector: 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun/home/buildroot/autobuild/instance-3/output-1/host/opt/ext-toolchain/bin/../lib/gcc/mipsel-buildroot-linux-uclibc/9.3.0/../../../../mipsel-buildroot-linux-uclibc/bin/ld: utils.cpp:(.text._ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag[_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag]+0xd0): undefined reference to `__stack_chk_fail' 10*4882a593Smuzhiyun 11*4882a593SmuzhiyunIndeed, support for -fstack-protector-strong can't be detected through 12*4882a593Smuzhiyuncheck_cxx_compiler_flag as some toolchains need to link with -lssp to 13*4882a593Smuzhiyunenable SSP support 14*4882a593Smuzhiyun 15*4882a593SmuzhiyunFixes: 16*4882a593Smuzhiyun - http://autobuild.buildroot.org/results/ae4635899124c602c70d2b342a76f95c34aa4a3d 17*4882a593Smuzhiyun 18*4882a593SmuzhiyunUpstream: https://github.com/Exiv2/exiv2/commit/f31c0eba098889899d29b7b0da830aee2b62a7b8 19*4882a593SmuzhiyunSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> 20*4882a593Smuzhiyun--- 21*4882a593Smuzhiyun CMakeLists.txt | 1 + 22*4882a593Smuzhiyun cmake/compilerFlags.cmake | 4 ++-- 23*4882a593Smuzhiyun 2 files changed, 3 insertions(+), 2 deletions(-) 24*4882a593Smuzhiyun 25*4882a593Smuzhiyundiff --git a/CMakeLists.txt b/CMakeLists.txt 26*4882a593Smuzhiyunindex 6f0da06a..0746ee14 100644 27*4882a593Smuzhiyun--- a/CMakeLists.txt 28*4882a593Smuzhiyun+++ b/CMakeLists.txt 29*4882a593Smuzhiyun@@ -47,6 +47,7 @@ mark_as_advanced( 30*4882a593Smuzhiyun EXIV2_TEAM_USE_SANITIZERS 31*4882a593Smuzhiyun ) 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun+option( BUILD_WITH_STACK_PROTECTOR "Build with stack protector" ON ) 34*4882a593Smuzhiyun option( BUILD_WITH_CCACHE "Use ccache to speed up compilations" OFF ) 35*4882a593Smuzhiyun option( BUILD_WITH_COVERAGE "Add compiler flags to generate coverage stats" OFF ) 36*4882a593Smuzhiyun 37*4882a593Smuzhiyundiff --git a/cmake/compilerFlags.cmake b/cmake/compilerFlags.cmake 38*4882a593Smuzhiyunindex 35faf501..0a646e50 100644 39*4882a593Smuzhiyun--- a/cmake/compilerFlags.cmake 40*4882a593Smuzhiyun+++ b/cmake/compilerFlags.cmake 41*4882a593Smuzhiyun@@ -33,8 +33,8 @@ if ( MINGW OR UNIX OR MSYS ) # MINGW, Linux, APPLE, CYGWIN 42*4882a593Smuzhiyun endif() 43*4882a593Smuzhiyun if(HAS_FCF_PROTECTION) 44*4882a593Smuzhiyun add_compile_options(-fcf-protection) 45*4882a593Smuzhiyun- endif() 46*4882a593Smuzhiyun- if(HAS_FSTACK_PROTECTOR_STRONG) 47*4882a593Smuzhiyun+ endif() 48*4882a593Smuzhiyun+ if(BUILD_WITH_STACK_PROTECTOR AND HAS_FSTACK_PROTECTOR_STRONG) 49*4882a593Smuzhiyun add_compile_options(-fstack-protector-strong) 50*4882a593Smuzhiyun endif() 51*4882a593Smuzhiyun endif() 52*4882a593Smuzhiyun-- 53*4882a593Smuzhiyun2.31.1 54*4882a593Smuzhiyun 55