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}")