From fefedb945e5cbea263e7dc0a9a698037d619a969 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 1 May 2018 19:04:52 +0200 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/configure | 14 ++++++++++++++ gcc/configure.ac | 14 ++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 91f5f10514e..b1a5488bd58 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2018-05-01 Jakub Jelinek + * 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 6121e163259..5c345ce0fd7 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 b066cc609e1..65dbf1f2f80 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) -- 2.30.2