pmaports/cross/gcc-armv7/gcc-as-needed-push-pop.patch
Grant Miller 74941fe0d4
Add cross/{binutils,busybox-static,gcc,gcc6,musl}-armv7 (!110)
Generated with:
$ pmbootstrap aportgen binutils-armv7 busybox-static-armv7 gcc-armv7 \
  gcc7-armv7 musl-armv7

[skip ci]
2018-12-22 23:25:26 +01:00

43 lines
1.8 KiB
Diff

From: Jakub Jelinek <jakub@redhat.com>
Subject: [PATCH] Use --push-state --as-needed and --pop-state instead of --as-needed and --no-as-needed for libgcc
As discussed, using --as-needed and --no-as-needed is dangerous, because
it results in --no-as-needed even for libraries after -lgcc_s, even when the
default is --as-needed or --as-needed has been specified earlier on the
command line.
If the linker supports --push-state/--pop-state, we should IMHO use it.
2018-04-11 Jakub Jelinek <jakub@redhat.com>
* configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use
--push-state --as-needed and --pop-state instead of --as-needed and
--no-as-needed if ld supports it.
* configure: Regenerated.
Index: b/gcc/configure.ac
===================================================================
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -5518,11 +5518,21 @@ if test $in_tree_ld = yes ; then
if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2 \
&& test $in_tree_ld_is_elf = yes; then
gcc_cv_ld_as_needed=yes
+ if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 28; then
+ gcc_cv_ld_as_needed_option='--push-state --as-needed'
+ gcc_cv_ld_no_as_needed_option='--pop-state'
+ fi
fi
elif test x$gcc_cv_ld != x; then
# Check if linker supports --as-needed and --no-as-needed options
if $gcc_cv_ld --help 2>&1 | grep as-needed > /dev/null; then
gcc_cv_ld_as_needed=yes
+ if $gcc_cv_ld --help 2>&1 | grep push-state > /dev/null; then
+ if $gcc_cv_ld --help 2>&1 | grep pop-state > /dev/null; then
+ gcc_cv_ld_as_needed_option='--push-state --as-needed'
+ gcc_cv_ld_no_as_needed_option='--pop-state'
+ fi
+ fi
fi
case "$target:$gnu_ld" in
*-*-solaris2*:no)