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 d4e942496830..7074b042ba0a 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_cxxobjects,$(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 b05ad09efed0..aa34ecefd1b0 100644 --- a/config_host.mk.in +++ b/config_host.mk.in @@ -259,6 +259,7 @@ export HAVE_GCC_FNO_INLINE=@HAVE_GCC_FNO_INLINE@ 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 95ee51cbec11..10bf82f583f4 100644 --- a/configure.ac +++ b/configure.ac @@ -5975,7 +5975,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 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 supports -mno-avx]) save_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -Werror -mno-avx" @@ -6172,6 +6182,7 @@ AC_SUBST(HAVE_GCC_AVX) AC_SUBST(HAVE_GCC_STACK_PROTECTOR_STRONG) 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 |