gollvm: extend -fcf-protection workaround to libbacktrace/libffi
In cases where the host compiler hard-wires on -fcf-protection=branch,
extend the workaround for ld.gold to the builds of libffi and
libbacktrace when building gollvm.
Updates golang/go#38728.
Change-Id: I6adcf1d5ab4795efc9f5e38046a8f57349be1e13
Reviewed-on: https://go-review.googlesource.com/c/gollvm/+/240560
Reviewed-by: Cherry Zhang <cherryyz@google.com>
diff --git a/cmake/modules/AddGollvm.cmake b/cmake/modules/AddGollvm.cmake
index 9539ee0..d8ca938 100644
--- a/cmake/modules/AddGollvm.cmake
+++ b/cmake/modules/AddGollvm.cmake
@@ -52,11 +52,12 @@
# can cause unpleasant interactions with gold (see
# https://sourceware.org/bugzilla/show_bug.cgi?id=25921 for details).
message(STATUS "trying -fcf-protection=none workaround")
- SET(CMAKE_REQUIRED_FLAGS "${LVARIANT} -fsplit-stack -fcf-protection=none")
+ set(CMAKE_REQUIRED_FLAGS "${LVARIANT} -fsplit-stack -fcf-protection=none")
check_c_source_compiles("#include<stdio.h>\nint main(){printf(\"hello\");\nreturn 0;}" SPLIT_STACK_WORKAROUND)
if(SPLIT_STACK_WORKAROUND)
message(STATUS "applying -fcf-protection=none workaround")
add_compile_options(-fcf-protection=none)
+ set(CFPROTECTION_WORKAROUND "-fcf-protection=none")
set(C_SUPPORTS_SPLIT_STACK 1)
endif()
endif()
diff --git a/cmake/modules/LibbacktraceUtils.cmake b/cmake/modules/LibbacktraceUtils.cmake
index d58a6e3..dc54f18 100644
--- a/cmake/modules/LibbacktraceUtils.cmake
+++ b/cmake/modules/LibbacktraceUtils.cmake
@@ -66,7 +66,7 @@
set(libbacktraceflags "-g")
if(GOLLVM_USE_SPLIT_STACK)
- string(APPEND libbacktraceflags " -fsplit-stack")
+ string(APPEND libbacktraceflags " -fsplit-stack ${CFPROTECTION_WORKAROUND}")
endif()
string(APPEND libbacktraceflags " ${GOLLVM_EXTRA_CFLAGS}")
diff --git a/cmake/modules/LibffiUtils.cmake b/cmake/modules/LibffiUtils.cmake
index 08562f4..d4266fc 100644
--- a/cmake/modules/LibffiUtils.cmake
+++ b/cmake/modules/LibffiUtils.cmake
@@ -83,7 +83,7 @@
set(libffiflags "-g")
if(GOLLVM_USE_SPLIT_STACK)
- string(APPEND libffiflags " -fsplit-stack")
+ string(APPEND libffiflags " -fsplit-stack ${CFPROTECTION_WORKAROUND}")
endif()
string(APPEND libffiflags " ${GOLLVM_EXTRA_CFLAGS}")