aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2018-05-01 19:04:52 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2018-05-01 19:04:52 +0200
commitfefedb945e5cbea263e7dc0a9a698037d619a969 (patch)
treeb838c852001d3c6114890f1ff77ba4e317beba16 /gcc
parent58b40a6702c7a7e9203aacce83273698b8f3e535 (diff)
downloadgcc-fefedb945e5cbea263e7dc0a9a698037d619a969.zip
gcc-fefedb945e5cbea263e7dc0a9a698037d619a969.tar.gz
gcc-fefedb945e5cbea263e7dc0a9a698037d619a969.tar.bz2
configure.ac (LD_AS_NEEDED_OPTION, [...]): Use --push-state --as-needed and --pop-state instead of --as-needed and...
* 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. From-SVN: r259803
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rwxr-xr-xgcc/configure14
-rw-r--r--gcc/configure.ac14
3 files changed, 33 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 91f5f10..b1a5488 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2018-05-01 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.
+
PR web/85578
* doc/install.texi2html: Replace _002d with - and _002a with * in
generated html files using sed.
diff --git a/gcc/configure b/gcc/configure
index 6121e16..5c345ce 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -28733,11 +28733,25 @@ 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 \
+ && $gcc_cv_ld --help 2>&1 | grep pop-state > /dev/null \
+ && echo "$ld_ver" | grep GNU > /dev/null \
+ && test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 28; then
+ # Use these options only when both ld.bfd and ld.gold support
+ # --push-state/--pop-state, which unfortunately wasn't added
+ # at the same time.
+ gcc_cv_ld_as_needed_option='--push-state --as-needed'
+ gcc_cv_ld_no_as_needed_option='--pop-state'
+ fi
fi
case "$target:$gnu_ld" in
*-*-solaris2*:no)
diff --git a/gcc/configure.ac b/gcc/configure.ac
index b066cc6..65dbf1f 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -5517,11 +5517,25 @@ 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 \
+ && $gcc_cv_ld --help 2>&1 | grep pop-state > /dev/null \
+ && echo "$ld_ver" | grep GNU > /dev/null \
+ && test "$ld_vers_major" -eq 2 -a "$ld_vers_minor" -ge 28; then
+ # Use these options only when both ld.bfd and ld.gold support
+ # --push-state/--pop-state, which unfortunately wasn't added
+ # at the same time.
+ gcc_cv_ld_as_needed_option='--push-state --as-needed'
+ gcc_cv_ld_no_as_needed_option='--pop-state'
+ fi
fi
case "$target:$gnu_ld" in
*-*-solaris2*:no)