diff options
-rw-r--r-- | bridges/Library_cpp_uno.mk | 7 | ||||
-rw-r--r-- | config_host.mk.in | 1 | ||||
-rw-r--r-- | configure.ac | 11 |
3 files changed, 18 insertions, 1 deletions
diff --git a/bridges/Library_cpp_uno.mk b/bridges/Library_cpp_uno.mk index f9e573bd7ff2..277c54cf79dc 100644 --- a/bridges/Library_cpp_uno.mk +++ b/bridges/Library_cpp_uno.mk @@ -30,7 +30,12 @@ else ifeq ($(CPUNAME),AARCH64) ifneq ($(filter ANDROID DRAGONFLY FREEBSD LINUX NETBSD OPENBSD,$(OS)),) bridges_SELECTED_BRIDGE := gcc3_linux_aarch64 -bridge_exception_objects := abi callvirtualfunction uno2cpp +bridge_exception_objects := abi uno2cpp + +$(eval $(call gb_Library_add_exception_objects,$(gb_CPPU_ENV)_uno, \ + bridges/source/cpp_uno/$(bridges_SELECTED_BRIDGE)/callvirtualfunction, \ + $(if $(HAVE_GCC_STACK_CLASH_PROTECTION),-fno-stack-clash-protection) \ +)) $(eval $(call gb_Library_add_exception_objects,$(gb_CPPU_ENV)_uno, \ bridges/source/cpp_uno/$(bridges_SELECTED_BRIDGE)/cpp2uno, \ diff --git a/config_host.mk.in b/config_host.mk.in index cbfa19f0e7b4..e621a4e03845 100644 --- a/config_host.mk.in +++ b/config_host.mk.in @@ -250,6 +250,7 @@ export HAVE_GCC_FNO_ENFORCE_EH_SPECS=@HAVE_GCC_FNO_ENFORCE_EH_SPECS@ export HAVE_GCC_FNO_SIZED_DEALLOCATION=@HAVE_GCC_FNO_SIZED_DEALLOCATION@ export HAVE_GCC_GGDB2=@HAVE_GCC_GGDB2@ export HAVE_GCC_SPLIT_DWARF=@HAVE_GCC_SPLIT_DWARF@ +export HAVE_GCC_STACK_CLASH_PROTECTION=@HAVE_GCC_STACK_CLASH_PROTECTION@ export HAVE_GNUMAKE_FILE_FUNC=@HAVE_GNUMAKE_FILE_FUNC@ export HAVE_LD_BSYMBOLIC_FUNCTIONS=@HAVE_LD_BSYMBOLIC_FUNCTIONS@ export HAVE_LD_HASH_STYLE=@HAVE_LD_HASH_STYLE@ diff --git a/configure.ac b/configure.ac index 809ed94733a2..717dafe71648 100644 --- a/configure.ac +++ b/configure.ac @@ -6155,7 +6155,17 @@ AC_CONFIG_HEADERS([config_host/config_probes.h]) dnl =================================================================== dnl GCC features dnl =================================================================== +HAVE_GCC_STACK_CLASH_PROTECTION= if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then + AC_MSG_CHECKING([whether $CC_BASE supports -fstack-clash-protection]) + save_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -fstack-clash-protection" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM(, [[return 0;]])], + [AC_MSG_RESULT([yes]); HAVE_GCC_STACK_CLASH_PROTECTION=TRUE], + [AC_MSG_RESULT([no])]) + CFLAGS=$save_CFLAGS + AC_MSG_CHECKING([whether $CC_BASE supports -mno-avx]) save_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -Werror -mno-avx" @@ -6340,6 +6350,7 @@ fi AC_SUBST(HAVE_GCC_AVX) AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC) AC_SUBST(HAVE_GCC_BUILTIN_FFS) +AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION) dnl =================================================================== dnl Identify the C++ library |