[PR other/79543] Fix GNU ld --version scanning to conform to the GNU Coding Standards

Thomas Schwinge thomas@codesourcery.com
Thu Oct 19 16:48:00 GMT 2017


Hi!

As discussed in <https://gcc.gnu.org/PR79543>:

| [...] target
| libraries [...] conditionally use certain linker features, depending on linker
| version numbers.  For example, linker version scripts in libgomp; see
| LIBGOMP_BUILD_VERSIONED_SHLIB, LIBGOMP_BUILD_VERSIONED_SHLIB_GNU usage in
| libgomp/Makefile.am, which are defined in libgomp/acinclude.m4 based on the
| enable_symvers value, which is set by some logic depending on "ld --version"
| output.  Looking at one specific build's libgomp/config.log, I see:
| 
|     [...]
|     configure:16132: checking if the linker ([...]/gcc/collect-ld) is GNU ld
|     configure:16147: result: yes
|     [...]
|     configure:16389: WARNING: === Linker version 1125 is too old for
|     configure:16391: WARNING: === full symbol versioning support in this release of GCC.
|     configure:16393: WARNING: === You would need to upgrade your binutils to version
|     configure:16395: WARNING: === 21400 or later and rebuild GCC.
|     configure:16404: WARNING: === Symbol versioning will be disabled.
|     [...]
| 
| Now, what is this "1125" linker version?
| 
|     $ [...]/gcc/collect-ld --version
|     GNU ld (Sourcery CodeBench ([...]) Lite 2015.11-[...]) 2.25.51
| 
| ..., and then apply the "magic" used in libgomp/acinclude.m4 to compute
| libgomp_gnu_ld_version:
| 
|     $ [...]/gcc/collect-ld --version | sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q' | awk -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'
|     1125
| 
| "1125" instead of the expected "22551".  That's pretty weird, and I suppose it
| may be causing all kinds of "interesting" issues, when using a linker that has
| been configured to override/augment its version string?

Specifically, it's the additional set of nested parens that is confusing
the sed command.

| Joseph told me that "the correct logic for finding the version number is to
| take everything after the last space on the first line of the output, as per
| the GNU Coding Standards.

See here:
<https://www.gnu.org/prep/standards/html_node/_002d_002dversion.html>:
"[...] the version number proper starts after the last space.  [...]"

| (It's possible some very old binutils versions may
| not have properly formatted output; my view is that each GCC version should
| have a minimum corresponding binutils version, no more than say five years old,
| for targets using GNU binutils.)"

(Agreed.  That's for another day.)

| Yet better, obviously, would be to not rely on such version-based decisions at
| all.

(That, too.)

| (Hopefully, similar parsing is not also being done for "as --version", or other
| tools

(That, too; not verified now.)

| and this was just a one-off problem, possibly originally introduced in
| libstdc++-v3/acinclude.m4, 15 years ago, and the copied from there to other
| target libraries?  I haven't looked in detail.)

(Also, I don't know what the GNU Conding Standards described, 15 years
ago.)


| (For reference, this is the root cause for the issue reported in
| <http://mid.mail-archive.com/6351bfaf-d64e-5f73-9749-78b469dba5fa@mentor.com>.)

In addition to that libgomp example, the problem can be observed for
libstdc++ in the following existing test cases
libgomp.oacc-c++/../libgomp.oacc-c-c++-common/context-1.c,
libgomp.oacc-c++/../libgomp.oacc-c-c++-common/context-2.c,
libgomp.oacc-c++/../libgomp.oacc-c-c++-common/context-3.c,
libgomp.oacc-c++/../libgomp.oacc-c-c++-common/context-4.c, and
libgomp.oacc-c++/../libgomp.oacc-c-c++-common/host_data-1.c.  Trying to
link in cuBLAS (these require a nvptx offloading configuration), these
FAIL to compile:

    /usr/lib/x86_64-linux-gnu/libcublas.so: undefined reference to `operator delete[](void*)@GLIBCXX_3.4'
    /usr/lib/x86_64-linux-gnu/libcublas.so: undefined reference to `operator new[](unsigned long)@GLIBCXX_3.4'


Applying the following patch (that is, simplying the sed command), makes
the problem go away:

    -sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
    +sed -e 's/GNU gold /GNU ld /;s/GNU ld .* \(.*\)/\1/; q'`

In one specific build, this causes the following changes:

    x86_64-none-linux-gnu/libatomic/config.log:
    
    [...]
    -configure:15071: WARNING: === Linker version 1125 is too old for
    -configure:15073: WARNING: === full symbol versioning support in this release of GCC.
    -configure:15075: WARNING: === You would need to upgrade your binutils to version
    -configure:15077: WARNING: === 21400 or later and rebuild GCC.
    -configure:15086: WARNING: === Symbol versioning will be disabled.
    -configure:15136: versioning on shared library symbols is no
    +configure:15136: versioning on shared library symbols is gnu
    [...]

x86_64-none-linux-gnu/libgomp/config.log:

    [...]
    -configure:16458: WARNING: === Linker version 1125 is too old for
    -configure:16460: WARNING: === full symbol versioning support in this release of GCC.
    -configure:16462: WARNING: === You would need to upgrade your binutils to version
    -configure:16464: WARNING: === 21400 or later and rebuild GCC.
    -configure:16473: WARNING: === Symbol versioning will be disabled.
    [...]
    -configure:16550: versioning on shared library symbols is no
    +configure:16550: versioning on shared library symbols is gnu
    [...]

x86_64-none-linux-gnu/libstdc++-v3/config.log:

    [...]
     configure:53843: checking for ld version
    -configure:53854: result: 1125
    +configure:53854: result: 22551
    +configure:53881: checking for ld that supports -Wl,--gc-sections
    +configure:53899: [...]
    +configure:53899: $? = 0
    +configure:53920: result: yes
    [...]
    -configure:79256: WARNING: === Linker version 1125 is too old for
    -configure:79258: WARNING: === full symbol versioning support in this release of GCC.
    -configure:79260: WARNING: === You would need to upgrade your binutils to version
    -configure:79262: WARNING: === 21400 or later and rebuild GCC.
    -configure:79264: WARNING: === Symbol versioning will be disabled.
    [...]
    -configure:79350: versioning on shared library symbols is no
    +configure:79350: versioning on shared library symbols is gnu
    [...]
    +configure:80758: checking for first version to support std::exception_ptr
    +configure:80795: result: 4.6.0
    [...]

x86_64-none-linux-gnu/libstdc++-v3/Makefile:

     SECTION_FLAGS = -ffunction-sections -fdata-sections
    -SECTION_LDFLAGS = 
    +SECTION_LDFLAGS = -Wl,--gc-sections 

    -SYMVER_FILE = config/abi/pre/none.ver
    +SYMVER_FILE = config/abi/pre/gnu.ver

x86_64-none-linux-gnu/libstdc++-v3/config.h:

     /* Define to 1 if GCC 4.6 supported std::exception_ptr for the target */
    -/* #undef HAVE_EXCEPTION_PTR_SINCE_GCC46 */
    +#define HAVE_EXCEPTION_PTR_SINCE_GCC46 1
     
     /* Define to 1 if you have the <execinfo.h> header file. */
     #define HAVE_EXECINFO_H 1
    @@ -405,7 +405,7 @@
     
     /* Define to 1 if the target runtime linker supports binding the same symbol
        to different versions. */
    -/* #undef HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */
    +#define HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT 1
     
     /* Define to 1 if you have the <sys/filio.h> header file. */
     /* #undef HAVE_SYS_FILIO_H */
    @@ -842,13 +842,13 @@
     #define _GLIBCXX_STDIO_SEEK_END 2
     
     /* Define to use symbol versioning in the shared library. */
    -/* #undef _GLIBCXX_SYMVER */
    +#define _GLIBCXX_SYMVER 1
     
     /* Define to use darwin versioning in the shared library. */
     /* #undef _GLIBCXX_SYMVER_DARWIN */
     
     /* Define to use GNU versioning in the shared library. */
    -/* #undef _GLIBCXX_SYMVER_GNU */
    +#define _GLIBCXX_SYMVER_GNU 1
     
     /* Define to use GNU namespace versioning in the shared library. */
     /* #undef _GLIBCXX_SYMVER_GNU_NAMESPACE */

Pending testing, I propose to commit the following patch to trunk, and
similar for gcc-7-branch, and gcc-6-branch.  If approving this, please
respond with "Reviewed-by: NAME <EMAIL>" so that your effort will be
recorded.  See <https://gcc.gnu.org/wiki/Reviewed-by>.

commit 9f6652fe67efbde9da3ac74e81acc7776fc6a8e6
Author: Thomas Schwinge <thomas@codesourcery.com>
Date:   Wed Oct 18 15:24:46 2017 +0200

    [PR other/79543] Fix GNU ld --version scanning to conform to the GNU Coding Standards
    
            libatomic/
            PR other/79543
            * acinclude.m4 (LIBAT_CHECK_LINKER_FEATURES): Fix GNU ld --version
            scanning to conform to the GNU Coding Standards.
            * configure: Regenerate.
            libffi/
            PR other/79543
            * acinclude.m4 (LIBAT_CHECK_LINKER_FEATURES): Fix GNU ld --version
            scanning to conform to the GNU Coding Standards.
            * configure: Regenerate.
            libgomp/
            PR other/79543
            * acinclude.m4 (LIBGOMP_CHECK_LINKER_FEATURES): Fix GNU ld
            --version scanning to conform to the GNU Coding Standards.
            * configure: Regenerate.
            libitm/
            PR other/79543
            * acinclude.m4 (LIBITM_CHECK_LINKER_FEATURES): Fix GNU ld
            --version scanning to conform to the GNU Coding Standards.
            * configure: Regenerate.
            libstdc++-v3/
            PR other/79543
            * acinclude.m4 (GLIBCXX_CHECK_LINKER_FEATURES): Fix GNU ld
            --version scanning to conform to the GNU Coding Standards.
            * configure: Regenerate.
---
 libatomic/acinclude.m4    |  4 ++--
 libatomic/configure       |  2 +-
 libffi/acinclude.m4       |  4 ++--
 libffi/configure          |  2 +-
 libgomp/acinclude.m4      |  2 +-
 libgomp/configure         |  2 +-
 libitm/acinclude.m4       |  2 +-
 libitm/configure          |  2 +-
 libstdc++-v3/acinclude.m4 |  2 +-
 libstdc++-v3/configure    | 22 +++++++++++-----------
 10 files changed, 22 insertions(+), 22 deletions(-)

diff --git libatomic/acinclude.m4 libatomic/acinclude.m4
index 383218f..6a3c5c5 100644
--- libatomic/acinclude.m4
+++ libatomic/acinclude.m4
@@ -336,7 +336,7 @@ AC_DEFUN([LIBAT_CHECK_LINKER_FEATURES], [
   fi
   changequote(,)
   ldver=`$LD --version 2>/dev/null |
-         sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+         sed -e 's/GNU gold /GNU ld /;s/GNU ld .* \(.*\)/\1/; q'`
   changequote([,])
   libat_gnu_ld_version=`echo $ldver | \
          $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'`
@@ -438,7 +438,7 @@ AC_DEFUN([LIBAT_CHECK_LINKER_FEATURES], [
   fi
   changequote(,)
   ldver=`$LD --version 2>/dev/null |
-         sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+         sed -e 's/GNU gold /GNU ld /;s/GNU ld .* \(.*\)/\1/; q'`
   changequote([,])
   libat_gnu_ld_version=`echo $ldver | \
          $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'`
diff --git libatomic/configure libatomic/configure
index e88a7b8..7d47525 100755
--- libatomic/configure
+++ libatomic/configure
@@ -14873,7 +14873,7 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
   fi
 
   ldver=`$LD --version 2>/dev/null |
-         sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+         sed -e 's/GNU gold /GNU ld /;s/GNU ld .* \(.*\)/\1/; q'`
 
   libat_gnu_ld_version=`echo $ldver | \
          $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
diff --git libffi/acinclude.m4 libffi/acinclude.m4
index 270dadf..0f2c1ea 100644
--- libffi/acinclude.m4
+++ libffi/acinclude.m4
@@ -178,7 +178,7 @@ AC_DEFUN([LIBAT_CHECK_LINKER_FEATURES], [
   fi
   changequote(,)
   ldver=`$LD --version 2>/dev/null |
-         sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+         sed -e 's/GNU gold /GNU ld /;s/GNU ld .* \(.*\)/\1/; q'`
   changequote([,])
   libat_gnu_ld_version=`echo $ldver | \
          $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'`
@@ -280,7 +280,7 @@ AC_DEFUN([LIBAT_CHECK_LINKER_FEATURES], [
   fi
   changequote(,)
   ldver=`$LD --version 2>/dev/null |
-         sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+         sed -e 's/GNU gold /GNU ld /;s/GNU ld .* \(.*\)/\1/; q'`
   changequote([,])
   libat_gnu_ld_version=`echo $ldver | \
          $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'`
diff --git libffi/configure libffi/configure
index 74b747b..f82fe11 100755
--- libffi/configure
+++ libffi/configure
@@ -16167,7 +16167,7 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
   fi
 
   ldver=`$LD --version 2>/dev/null |
-         sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+         sed -e 's/GNU gold /GNU ld /;s/GNU ld .* \(.*\)/\1/; q'`
 
   libat_gnu_ld_version=`echo $ldver | \
          $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
diff --git libgomp/acinclude.m4 libgomp/acinclude.m4
index d43aa88..d9d9da8 100644
--- libgomp/acinclude.m4
+++ libgomp/acinclude.m4
@@ -153,7 +153,7 @@ AC_DEFUN([LIBGOMP_CHECK_LINKER_FEATURES], [
   fi
   changequote(,)
   ldver=`$LD --version 2>/dev/null |
-         sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+         sed -e 's/GNU gold /GNU ld /;s/GNU ld .* \(.*\)/\1/; q'`
   changequote([,])
   libgomp_gnu_ld_version=`echo $ldver | \
          $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'`
diff --git libgomp/configure libgomp/configure
index b7e9f40..efcf3f5 100755
--- libgomp/configure
+++ libgomp/configure
@@ -16256,7 +16256,7 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
   fi
 
   ldver=`$LD --version 2>/dev/null |
-         sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+         sed -e 's/GNU gold /GNU ld /;s/GNU ld .* \(.*\)/\1/; q'`
 
   libgomp_gnu_ld_version=`echo $ldver | \
          $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
diff --git libitm/acinclude.m4 libitm/acinclude.m4
index c81b3e9..7c26756 100644
--- libitm/acinclude.m4
+++ libitm/acinclude.m4
@@ -246,7 +246,7 @@ AC_DEFUN([LIBITM_CHECK_LINKER_FEATURES], [
   fi
   changequote(,)
   ldver=`$LD --version 2>/dev/null |
-         sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+         sed -e 's/GNU gold /GNU ld /;s/GNU ld .* \(.*\)/\1/; q'`
   changequote([,])
   libitm_gnu_ld_version=`echo $ldver | \
          $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'`
diff --git libitm/configure libitm/configure
index 775f370..1ce18fd 100644
--- libitm/configure
+++ libitm/configure
@@ -16828,7 +16828,7 @@ fi
   fi
 
   ldver=`$LD --version 2>/dev/null |
-         sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+         sed -e 's/GNU gold /GNU ld /;s/GNU ld .* \(.*\)/\1/; q'`
 
   libitm_gnu_ld_version=`echo $ldver | \
          $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
diff --git libstdc++-v3/acinclude.m4 libstdc++-v3/acinclude.m4
index 599308f..e4a64ce 100644
--- libstdc++-v3/acinclude.m4
+++ libstdc++-v3/acinclude.m4
@@ -219,7 +219,7 @@ AC_DEFUN([GLIBCXX_CHECK_LINKER_FEATURES], [
       glibcxx_ld_is_gold=yes
     fi
     ldver=`$LD --version 2>/dev/null |
-	   sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+	   sed -e 's/GNU gold /GNU ld /;s/GNU ld .* \(.*\)/\1/; q'`
     changequote([,])
     glibcxx_gnu_ld_version=`echo $ldver | \
 	   $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'`
diff --git libstdc++-v3/configure libstdc++-v3/configure
index 836a6d5..ece031d 100755
--- libstdc++-v3/configure
+++ libstdc++-v3/configure
@@ -21961,7 +21961,7 @@ $as_echo_n "checking for ld version... " >&6; }
       glibcxx_ld_is_gold=yes
     fi
     ldver=`$LD --version 2>/dev/null |
-	   sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+	   sed -e 's/GNU gold /GNU ld /;s/GNU ld .* \(.*\)/\1/; q'`
 
     glibcxx_gnu_ld_version=`echo $ldver | \
 	   $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -29106,7 +29106,7 @@ $as_echo_n "checking for ld version... " >&6; }
       glibcxx_ld_is_gold=yes
     fi
     ldver=`$LD --version 2>/dev/null |
-	   sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+	   sed -e 's/GNU gold /GNU ld /;s/GNU ld .* \(.*\)/\1/; q'`
 
     glibcxx_gnu_ld_version=`echo $ldver | \
 	   $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -35100,7 +35100,7 @@ $as_echo_n "checking for ld version... " >&6; }
       glibcxx_ld_is_gold=yes
     fi
     ldver=`$LD --version 2>/dev/null |
-	   sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+	   sed -e 's/GNU gold /GNU ld /;s/GNU ld .* \(.*\)/\1/; q'`
 
     glibcxx_gnu_ld_version=`echo $ldver | \
 	   $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -41220,7 +41220,7 @@ $as_echo_n "checking for ld version... " >&6; }
       glibcxx_ld_is_gold=yes
     fi
     ldver=`$LD --version 2>/dev/null |
-	   sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+	   sed -e 's/GNU gold /GNU ld /;s/GNU ld .* \(.*\)/\1/; q'`
 
     glibcxx_gnu_ld_version=`echo $ldver | \
 	   $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -53141,7 +53141,7 @@ $as_echo_n "checking for ld version... " >&6; }
       glibcxx_ld_is_gold=yes
     fi
     ldver=`$LD --version 2>/dev/null |
-	   sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+	   sed -e 's/GNU gold /GNU ld /;s/GNU ld .* \(.*\)/\1/; q'`
 
     glibcxx_gnu_ld_version=`echo $ldver | \
 	   $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -53372,7 +53372,7 @@ $as_echo_n "checking for ld version... " >&6; }
       glibcxx_ld_is_gold=yes
     fi
     ldver=`$LD --version 2>/dev/null |
-	   sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+	   sed -e 's/GNU gold /GNU ld /;s/GNU ld .* \(.*\)/\1/; q'`
 
     glibcxx_gnu_ld_version=`echo $ldver | \
 	   $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -53847,7 +53847,7 @@ $as_echo_n "checking for ld version... " >&6; }
       glibcxx_ld_is_gold=yes
     fi
     ldver=`$LD --version 2>/dev/null |
-	   sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+	   sed -e 's/GNU gold /GNU ld /;s/GNU ld .* \(.*\)/\1/; q'`
 
     glibcxx_gnu_ld_version=`echo $ldver | \
 	   $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -60200,7 +60200,7 @@ $as_echo_n "checking for ld version... " >&6; }
       glibcxx_ld_is_gold=yes
     fi
     ldver=`$LD --version 2>/dev/null |
-	   sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+	   sed -e 's/GNU gold /GNU ld /;s/GNU ld .* \(.*\)/\1/; q'`
 
     glibcxx_gnu_ld_version=`echo $ldver | \
 	   $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -66116,7 +66116,7 @@ $as_echo_n "checking for ld version... " >&6; }
       glibcxx_ld_is_gold=yes
     fi
     ldver=`$LD --version 2>/dev/null |
-	   sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+	   sed -e 's/GNU gold /GNU ld /;s/GNU ld .* \(.*\)/\1/; q'`
 
     glibcxx_gnu_ld_version=`echo $ldver | \
 	   $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -66283,7 +66283,7 @@ $as_echo_n "checking for ld version... " >&6; }
       glibcxx_ld_is_gold=yes
     fi
     ldver=`$LD --version 2>/dev/null |
-	   sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+	   sed -e 's/GNU gold /GNU ld /;s/GNU ld .* \(.*\)/\1/; q'`
 
     glibcxx_gnu_ld_version=`echo $ldver | \
 	   $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
@@ -66511,7 +66511,7 @@ $as_echo_n "checking for ld version... " >&6; }
       glibcxx_ld_is_gold=yes
     fi
     ldver=`$LD --version 2>/dev/null |
-	   sed -e 's/GNU gold /GNU ld /;s/GNU ld version /GNU ld /;s/GNU ld ([^)]*) /GNU ld /;s/GNU ld \([0-9.][0-9.]*\).*/\1/; q'`
+	   sed -e 's/GNU gold /GNU ld /;s/GNU ld .* \(.*\)/\1/; q'`
 
     glibcxx_gnu_ld_version=`echo $ldver | \
 	   $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`


Grüße
 Thomas



More information about the Gcc-patches mailing list