summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config_host.mk.in1
-rw-r--r--configure.ac23
-rw-r--r--solenv/gbuild/platform/com_GCC_class.mk2
3 files changed, 25 insertions, 1 deletions
diff --git a/config_host.mk.in b/config_host.mk.in
index 2c5eec97a156..88a529da664a 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -318,6 +318,7 @@ export KF5_LIBS=$(gb_SPACE)@KF5_LIBS@
export KRB5_LIBS=@KRB5_LIBS@
export LCMS2_CFLAGS=$(gb_SPACE)@LCMS2_CFLAGS@
export LCMS2_LIBS=$(gb_SPACE)@LCMS2_LIBS@
+export LD_GC_SECTIONS=@LD_GC_SECTIONS@
export LD_PLUGIN=@LD_PLUGIN@
@x_LDFLAGS@ export LDFLAGS=@LDFLAGS@
export LFS_CFLAGS=@LFS_CFLAGS@
diff --git a/configure.ac b/configure.ac
index 5b9fd601ef9e..5c1dc1e5f919 100644
--- a/configure.ac
+++ b/configure.ac
@@ -4062,6 +4062,29 @@ printf ("hello world\n");
fi
AC_SUBST(HAVE_LD_BSYMBOLIC_FUNCTIONS)
+LD_GC_SECTIONS=
+if test "$GCC" = "yes"; then
+ for flag in "--gc-sections" "-dead_strip"; do
+ AC_MSG_CHECKING([for $flag linker support])
+ ldflags_save=$LDFLAGS
+ LDFLAGS="$LDFLAGS -Wl,$flag"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([
+#include <stdio.h>
+ ],[
+printf ("hello world\n");
+ ])],[
+ LD_GC_SECTIONS="-Wl,$flag"
+ AC_MSG_RESULT( found )
+ ], [
+ AC_MSG_RESULT( not found )
+ ])
+ LDFLAGS=$ldflags_save
+ if test -n "$LD_GC_SECTIONS"; then
+ break
+ fi
+ done
+fi
+AC_SUBST(LD_GC_SECTIONS)
HAVE_GSPLIT_DWARF=
if test "$enable_split_debug" != no; then
diff --git a/solenv/gbuild/platform/com_GCC_class.mk b/solenv/gbuild/platform/com_GCC_class.mk
index f40d315b1c3b..12ae0a21537e 100644
--- a/solenv/gbuild/platform/com_GCC_class.mk
+++ b/solenv/gbuild/platform/com_GCC_class.mk
@@ -95,7 +95,7 @@ gb_PrecompiledHeader_pch_with_obj = $(BUILDING_PCH_WITH_OBJ)
ifneq ($(BUILDING_PCH_WITH_OBJ),)
# If using Clang's PCH extra object, we may need to strip unused sections, otherwise inline and template functions
# emitted in that object may in some cases cause unresolved references to private symbols in other libraries.
-gb_LinkTarget_LDFLAGS += -Wl,--gc-sections
+gb_LinkTarget_LDFLAGS += $(LD_GC_SECTIONS)
gb_PrecompiledHeader_pch_with_obj += -ffunction-sections -fdata-sections
# Enable generating more shared code and debuginfo in the PCH object file.
gb_PrecompiledHeader_pch_with_obj += $(PCH_MODULES_DEBUGINFO)