diff options
-rw-r--r-- | config_host.mk.in | 1 | ||||
-rw-r--r-- | configure.ac | 23 | ||||
-rw-r--r-- | solenv/gbuild/platform/com_GCC_class.mk | 2 |
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) |