Hello.

Long time, no see.

After two years of active development, would like to introduce a new linker 
option for GCC’s -fuse-ld flag.
This linker delivers significant performance improvements—achieving speeds 
comparable to the Mold
linker—and has reached a mature stage, successfully linking large and complex 
projects
such as Chromium and the Rust compiler (rustc).

A few minor test-suite failures remain, primarily involving corner cases 
related to symbol versioning ([2])
and constructor/destructor ordering ([3]), and we are actively working to 
resolve them.
Support for the GCC linker plug-in is not yet implemented. The linker currently 
supports x86_64, aarch64
and riscv64gc Linux platforms.

The patch bootstraps with: --enable-languages=c++ --disable-lto 
--with-ld=`which wild` and vast majority
of tests pass.

Have a nice day,
Martin

[1] https://github.com/davidlattimore/wild
[2] https://github.com/davidlattimore/wild/issues/1302
[3] https://github.com/davidlattimore/wild/issues/588

---
 gcc/collect2.cc           | 13 +++++--
 gcc/common.opt            |  4 ++
 gcc/configure             | 18 ++++++++-
 gcc/configure.ac          | 82 +++++++++++++++++++++++----------------
 gcc/doc/invoke.texi       |  6 ++-
 gcc/gcc.cc                |  5 +++
 gcc/opts.cc               |  1 +
 libatomic/acinclude.m4    |  6 +++
 libatomic/configure       |  5 +++
 libgomp/acinclude.m4      |  6 +++
 libgomp/configure         |  5 +++
 libitm/acinclude.m4       |  6 +++
 libitm/configure          |  5 +++
 libstdc++-v3/acinclude.m4 |  8 +++-
 libstdc++-v3/configure    | 49 ++++++++++++++++++-----
 15 files changed, 168 insertions(+), 51 deletions(-)

diff --git a/gcc/collect2.cc b/gcc/collect2.cc
index 268ac378b9c..e84dc1cd437 100644
--- a/gcc/collect2.cc
+++ b/gcc/collect2.cc
@@ -777,6 +777,7 @@ main (int argc, char **argv)
       USE_BFD_LD,
       USE_LLD_LD,
       USE_MOLD_LD,
+      USE_WILD_LD,
       USE_LD_MAX
     } selected_linker = USE_DEFAULT_LD;
   static const char *const ld_suffixes[USE_LD_MAX] =
@@ -786,7 +787,8 @@ main (int argc, char **argv)
       "ld.gold",
       "ld.bfd",
       "ld.lld",
-      "ld.mold"
+      "ld.mold",
+      "wild"
     };
   static const char *const real_ld_suffix = "real-ld";
   static const char *const collect_ld_suffix = "collect-ld";
@@ -868,7 +870,7 @@ main (int argc, char **argv)
 #ifdef CROSS_DIRECTORY_STRUCTURE
     /* lld and mold are platform-agnostic and not prefixed with target
        triple.  */
-    if (!(i == USE_LLD_LD || i == USE_MOLD_LD))
+    if (!(i == USE_LLD_LD || i == USE_MOLD_LD || i == USE_WILD_LD))
       full_ld_suffixes[i] = concat (target_machine, "-", ld_suffixes[i],
                                    NULL);
     else
@@ -964,6 +966,8 @@ main (int argc, char **argv)
          selected_linker = USE_LLD_LD;
        else if (strcmp (argv[i], "-fuse-ld=mold") == 0)
          selected_linker = USE_MOLD_LD;
+       else if (strcmp (argv[i], "-fuse-ld=wild") == 0)
+         selected_linker = USE_WILD_LD;
        else if (startswith (argv[i], "-o"))
          {
            /* Parse the output filename if it's given so that we can make
@@ -1056,7 +1060,8 @@ main (int argc, char **argv)
   ld_file_name = 0;
 #ifdef DEFAULT_LINKER
   if (selected_linker == USE_BFD_LD || selected_linker == USE_GOLD_LD ||
-      selected_linker == USE_LLD_LD || selected_linker == USE_MOLD_LD)
+      selected_linker == USE_LLD_LD || selected_linker == USE_MOLD_LD ||
+      selected_linker == USE_WILD_LD)
     {
       char *linker_name;
 # ifdef HOST_EXECUTABLE_SUFFIX
@@ -1293,7 +1298,7 @@ main (int argc, char **argv)
              else if (!use_collect_ld
                       && startswith (arg, "-fuse-ld="))
                {
-                 /* Do not pass -fuse-ld={bfd|gold|lld|mold} to the linker. */
+                 /* Do not pass -fuse-ld={bfd|gold|lld|mold|wild} to the 
linker. */
                  ld1--;
                  ld2--;
                }
diff --git a/gcc/common.opt b/gcc/common.opt
index 9bc0c65c457..d44f713ae34 100644
--- a/gcc/common.opt
+++ b/gcc/common.opt
@@ -3448,6 +3448,10 @@ fuse-ld=mold
 Common Driver Negative(fuse-ld=mold)
 Use the Modern linker (MOLD) linker instead of the default linker.
 
+fuse-ld=wild
+Common Driver Negative(fuse-ld=wild)
+Use the Wild linker instead of the default linker.
+
 fuse-linker-plugin
 Common Undocumented Var(flag_use_linker_plugin)
 
diff --git a/gcc/configure b/gcc/configure
index 0e8a63c34fa..4bd5e75d83c 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -25562,6 +25562,18 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_is_mold" >&5
 $as_echo "$ld_is_mold" >&6; }
 
+# Check to see if we are using Wild instead of ld
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using wild" 
>&5
+$as_echo_n "checking whether we are using wild... " >&6; }
+ld_is_wild=no
+if test x$gcc_cv_ld != x; then
+  if $gcc_cv_ld --version 2>/dev/null | sed 1q \
+     | grep "Wild" > /dev/null; then
+    ld_is_wild=yes
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_is_wild" >&5
+$as_echo "$ld_is_wild" >&6; }
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking gold linker with split stack 
support as non default" >&5
 $as_echo_n "checking gold linker with split stack support as non default... " 
>&6; }
@@ -26526,6 +26538,8 @@ else
     :
   elif test x"$ld_is_mold" = xyes; then
     :
+  elif test x"$ld_is_wild" = xyes; then
+    :
   elif echo "$ld_ver" | grep GNU > /dev/null; then
     if test 0"$ld_date" -lt 20020404; then
       if test -n "$ld_date"; then
@@ -26599,7 +26613,7 @@ elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x -a 
x"$gcc_cv_objdump" != x ;
      && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
      && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1; then
     if $gcc_cv_ld -shared -o conftest1.so conftest1.o \
-       conftest2.o conftest3.o > /dev/null 2>&1 \
+       conftest2.o conftest3.o --no-gc-sections > /dev/null 2>&1 \
        || $gcc_cv_ld -r -o conftest1.so conftest1.o \
          conftest2.o conftest3.o > /dev/null 2>&1; then
       gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
@@ -27653,6 +27667,8 @@ if test x"$ld_is_gold" = xyes; then
   comdat_group=yes
 elif test x"$ld_is_mold" = xyes; then
   comdat_group=yes
+elif test x"$ld_is_wild" = xyes; then
+  comdat_group=yes
 elif test $in_tree_ld = yes ; then
   comdat_group=no
   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 \
diff --git a/gcc/configure.ac b/gcc/configure.ac
index a3243256af0..4ef55533612 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -137,7 +137,7 @@ AC_ARG_WITH([native-system-header-dir],
  configured_native_system_header_dir="${withval}"
 ], [configured_native_system_header_dir=])
 
-AC_ARG_WITH(build-sysroot, 
+AC_ARG_WITH(build-sysroot,
   [AS_HELP_STRING([--with-build-sysroot=sysroot],
                   [use sysroot as the system root during the build])],
   [if test x"$withval" != x ; then
@@ -169,10 +169,10 @@ AC_ARG_WITH(sysroot,
  yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;;
  *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
  esac
-   
+
  TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
  
CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
-       
+
  case ${TARGET_SYSTEM_ROOT} in
  "${test_prefix}"|"${test_prefix}/"*|\
  "${test_exec_prefix}"|"${test_exec_prefix}/"*|\
@@ -304,14 +304,14 @@ elif test x$withval != xno; then
 fi])
 
 # We would like to our source tree to be readonly.  However when releases or
-# pre-releases are generated, the flex/bison generated files as well as the 
+# pre-releases are generated, the flex/bison generated files as well as the
 # various formats of manuals need to be included along with the rest of the
-# sources.  Therefore we have --enable-generated-files-in-srcdir to do 
+# sources.  Therefore we have --enable-generated-files-in-srcdir to do
 # just that.
 
 AC_MSG_CHECKING([whether to place generated files in the source directory])
   dnl generated-files-in-srcdir is disabled by default
-  AC_ARG_ENABLE(generated-files-in-srcdir, 
+  AC_ARG_ENABLE(generated-files-in-srcdir,
     [AS_HELP_STRING([--enable-generated-files-in-srcdir],
                    [put copies of generated files in source dir
                     intended for creating source tarballs for users
@@ -593,7 +593,7 @@ ACX_PROG_CXX_WARNING_OPTS(
 ACX_PROG_CC_WARNING_OPTS(
        m4_quote(m4_do([-Wold-style-definition -Wc++-compat])), [c_strict_warn])
 ACX_PROG_CXX_WARNING_ALMOST_PEDANTIC(
-       m4_quote(m4_do([-Wno-long-long -Wno-variadic-macros ], 
+       m4_quote(m4_do([-Wno-long-long -Wno-variadic-macros ],
                       [-Wno-overlength-strings])), [strict_warn])
 ACX_PROG_CXX_WARNINGS_ARE_ERRORS([manual], [strict_warn])
 
@@ -613,7 +613,7 @@ AC_SUBST(warn_cxxflags)
 ACX_PROG_CC_WARNING_OPTS(
        m4_quote(m4_do([-fno-exceptions -fno-rtti 
-fasynchronous-unwind-tables])),
                       [noexception_flags])
-       
+
 # Enable expensive internal checks
 is_release=
 if test x"`cat $srcdir/DEV-PHASE`" != xexperimental; then
@@ -802,7 +802,7 @@ esac],
 [coverage_flags=""])
 AC_SUBST(coverage_flags)
 
-AC_ARG_ENABLE(gather-detailed-mem-stats, 
+AC_ARG_ENABLE(gather-detailed-mem-stats,
 [AS_HELP_STRING([--enable-gather-detailed-mem-stats],
                [enable detailed memory allocation stats gathering])], [],
 [enable_gather_detailed_mem_stats=no])
@@ -1217,7 +1217,7 @@ ACX_PROG_LN($LN_S)
 AC_PROG_RANLIB
 ranlib_flags=""
 AC_SUBST(ranlib_flags)
-     
+
 gcc_AC_PROG_INSTALL
 
 # See if cmp has --ignore-initial.
@@ -1585,7 +1585,7 @@ GCC_AC_FUNC_MMAP_BLACKLIST
 
 case "${host}" in
 *-*-*vms*)
-  # Under VMS, vfork works very differently than on Unix. The standard test 
+  # Under VMS, vfork works very differently than on Unix. The standard test
   # won't work, and it isn't easily adaptable. It makes more sense to
   # just force it.
   ac_cv_func_vfork_works=yes
@@ -1840,7 +1840,7 @@ fi
 CFLAGS="$saved_CFLAGS"
 CXXFLAGS="$saved_CXXFLAGS"
 
-# mkdir takes a single argument on some systems. 
+# mkdir takes a single argument on some systems.
 gcc_AC_FUNC_MKDIR_TAKES_ONE_ARG
 
 # File extensions
@@ -2100,7 +2100,7 @@ if test x$enable___cxa_atexit = xyes || \
     esac
   else
     # We can't check for __cxa_atexit when building a cross, so assume
-    # it is available 
+    # it is available
     use_cxa_atexit=yes
   fi
   if test x$use_cxa_atexit = xyes; then
@@ -2133,7 +2133,7 @@ AC_SUBST(extra_opt_files)
 # auto-host.h is the file containing items generated by autoconf and is
 # the first file included by config.h.
 # If host=build, it is correct to have bconfig include auto-host.h
-# as well.  If host!=build, we are in error and need to do more 
+# as well.  If host!=build, we are in error and need to do more
 # work to find out the build config parameters.
 if test x$host = x$build
 then
@@ -2143,7 +2143,7 @@ else
        # We create a subdir, then run autoconf in the subdir.
        # To prevent recursion we set host and build for the new
        # invocation of configure to the build for this invocation
-       # of configure. 
+       # of configure.
        tempdir=build.$$
        rm -rf $tempdir
        mkdir $tempdir
@@ -2349,7 +2349,7 @@ case $host_os in
          && test "x$enable_win32_registry" != x; then
        AC_DEFINE_UNQUOTED(WIN32_REGISTRY_KEY, "$enable_win32_registry",
   [Define to be the last component of the Windows registry key under which
-   to look for installation paths.  The full key used will be 
+   to look for installation paths.  The full key used will be
    HKEY_LOCAL_MACHINE/SOFTWARE/Free Software Foundation/{WIN32_REGISTRY_KEY}.
    The default is the GCC version number.])
       fi
@@ -2614,7 +2614,7 @@ AC_SUBST([collect2])
 case $use_collect2 in
   no) use_collect2= ;;
   "") ;;
-  *) 
+  *)
     host_xm_defines="${host_xm_defines} USE_COLLECT2"
     xm_defines="${xm_defines} USE_COLLECT2"
     case $host_can_use_collect2 in
@@ -2694,7 +2694,7 @@ AC_SUBST(ORIGINAL_AS_FOR_TARGET)
 case "$ORIGINAL_AS_FOR_TARGET" in
   ./as | ./as$build_exeext) ;;
   *) AC_CONFIG_FILES(as:exec-tool.in, [chmod +x as]) ;;
-esac 
+esac
 
 default_ld=
 AC_ARG_ENABLE(ld,
@@ -2797,12 +2797,22 @@ if test x$gcc_cv_ld != x; then
 fi
 AC_MSG_RESULT($ld_is_mold)
 
+# Check to see if we are using Wild instead of ld
+AC_MSG_CHECKING(whether we are using wild)
+ld_is_wild=no
+if test x$gcc_cv_ld != x; then
+  if $gcc_cv_ld --version 2>/dev/null | sed 1q \
+     | grep "Wild" > /dev/null; then
+    ld_is_wild=yes
+  fi
+fi
+AC_MSG_RESULT($ld_is_wild)
 
 AC_MSG_CHECKING(gold linker with split stack support as non default)
 # Check to see if default ld is not gold, but gold is
 # available and has support for split stack.  If gcc was configured
 # with gold then no checking is done.
-# 
+#
 if test x$ld_is_gold = xno && which ${gcc_cv_ld}.gold >/dev/null 2>&1; then
 
 # For platforms other than powerpc64*, enable as appropriate.
@@ -2839,7 +2849,7 @@ AC_SUBST(ORIGINAL_LD_FOR_TARGET)
 case "$ORIGINAL_LD_FOR_TARGET" in
   ./collect-ld | ./collect-ld$build_exeext) ;;
   *) AC_CONFIG_FILES(collect-ld:exec-tool.in, [chmod +x collect-ld]) ;;
-esac 
+esac
 
 AC_MSG_CHECKING(what linker to use)
 if test "$gcc_cv_ld" = ../ld/ld-new$build_exeext \
@@ -3006,7 +3016,7 @@ AC_SUBST(ORIGINAL_DSYMUTIL_FOR_TARGET)
 case "$ORIGINAL_DSYMUTIL_FOR_TARGET" in
   ./dsymutil | ./dsymutil$build_exeext) ;;
   *) AC_CONFIG_FILES(dsymutil:exec-tool.in, [chmod +x dsymutil]) ;;
-esac 
+esac
 
 # Figure out what assembler alignment features are present.
 gcc_GAS_CHECK_FEATURE([.balign and .p2align], gcc_cv_as_balign_and_p2align,,
@@ -3219,6 +3229,8 @@ else
     :
   elif test x"$ld_is_mold" = xyes; then
     :
+  elif test x"$ld_is_wild" = xyes; then
+    :
   elif echo "$ld_ver" | grep GNU > /dev/null; then
     if test 0"$ld_date" -lt 20020404; then
       if test -n "$ld_date"; then
@@ -3287,7 +3299,7 @@ elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x -a 
x"$gcc_cv_objdump" != x ;
      && $gcc_cv_as -o conftest2.o conftest2.s > /dev/null 2>&1 \
      && $gcc_cv_as -o conftest3.o conftest3.s > /dev/null 2>&1; then
     if $gcc_cv_ld -shared -o conftest1.so conftest1.o \
-       conftest2.o conftest3.o > /dev/null 2>&1 \
+       conftest2.o conftest3.o --no-gc-sections > /dev/null 2>&1 \
        || $gcc_cv_ld -r -o conftest1.so conftest1.o \
          conftest2.o conftest3.o > /dev/null 2>&1; then
       gcc_cv_ld_ro_rw_mix=`$gcc_cv_objdump -h conftest1.so \
@@ -3585,7 +3597,7 @@ if test $gcc_cv_as_section_exclude_e = no; then
          ;;
        i?86-*-solaris2* | x86_64-*-solaris2*)
          conftest_s='.section foo1, #exclude'
-         ;;      
+         ;;
       esac
       ;;
     esac
@@ -3703,6 +3715,8 @@ if test x"$ld_is_gold" = xyes; then
   comdat_group=yes
 elif test x"$ld_is_mold" = xyes; then
   comdat_group=yes
+elif test x"$ld_is_wild" = xyes; then
+  comdat_group=yes
 elif test $in_tree_ld = yes ; then
   comdat_group=no
   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 \
@@ -3835,17 +3849,17 @@ foo:    .long   25
        addil LT%foo-$tls_gdidx$,gp
        ldo RT%foo-$tls_gdidx$(%r1),%arg0
        b __tls_get_addr
-       nop             
+       nop
        addil LT%foo-$tls_ldidx$,gp
        b __tls_get_addr
        ldo RT%foo-$tls_ldidx$(%r1),%arg0
        addil LR%foo-$tls_dtpoff$,%ret0
        ldo RR%foo-$tls_dtpoff$(%r1),%t1
-       mfctl %cr27,%t1                 
+       mfctl %cr27,%t1
        addil LT%foo-$tls_ieoff$,gp
        ldw RT%foo-$tls_ieoff$(%r1),%t2
-       add %t1,%t2,%t3                 
-       mfctl %cr27,%t1                 
+       add %t1,%t2,%t3
+       mfctl %cr27,%t1
        addil LR%foo-$tls_leoff$,%t1
        ldo RR%foo-$tls_leoff$(%r1),%t2'
        tls_as_opt=--fatal-warnings
@@ -3911,7 +3925,7 @@ foo:      .long   25
          case $gas_flag in
            yes) tls_as_opt="$tls_as_opt --64" ;;
            no)  tls_as_opt="$tls_as_opt -xarch=amd64" ;;
-         esac    
+         esac
        fi
        conftest_s="$conftest_s
 foo:   .long   25
@@ -5044,7 +5058,7 @@ tls_ld:
        .section .text,"ax",@progbits
         .globl  _start
         .type   _start, @function
-_start:      
+_start:
        leal    value@tlsldm(%ebx), %eax
        call    ___tls_get_addr@plt
 
@@ -6887,7 +6901,7 @@ AC_CACHE_CHECK(linker --sysroot support,
       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 ; then
         gcc_cv_ld_sysroot=yes
       fi
-  elif test x$gcc_cv_ld != x; then 
+  elif test x$gcc_cv_ld != x; then
     if $gcc_cv_ld --help 2>&1 | grep sysroot > /dev/null; then
       gcc_cv_ld_sysroot=yes
     fi
@@ -6895,7 +6909,7 @@ AC_CACHE_CHECK(linker --sysroot support,
 if test x"$gcc_cv_ld_sysroot" = xyes; then
   AC_DEFINE(HAVE_LD_SYSROOT, 1,
   [Define if your linker supports --sysroot.])
-fi       
+fi
 
 AC_ARG_ENABLE(libssp,
 [AS_HELP_STRING([--enable-libssp], [enable linking against libssp])],
@@ -7273,7 +7287,7 @@ changequote(,)dnl
        # sources implementing front-end to GCC tree converters), and for
        # build infrastructure purposes (Make-lang.in, etc.)
        #
-       # This will be <subdir> (relative to $srcdir) if a line like 
+       # This will be <subdir> (relative to $srcdir) if a line like
        # gcc_subdir="<subdir>" or gcc_subdir=<subdir>
        # is found in <langdir>/config-lang.in, and will remain <langdir>
        # otherwise.
@@ -7571,7 +7585,7 @@ AC_ARG_VAR(GMPINC,[How to find GMP include files])
 
 AC_ARG_VAR(ISLLIBS,[How to link isl])
 AC_ARG_VAR(ISLINC,[How to find isl include files])
-if test "x${ISLLIBS}" != "x" ; then 
+if test "x${ISLLIBS}" != "x" ; then
    AC_DEFINE(HAVE_isl, 1, [Define if isl is in use.])
 fi
 
@@ -8015,6 +8029,6 @@ for d in $subdirs doc build common c-family
 do
     test -d $d || mkdir $d
 done
-], 
+],
 [subdirs='$subdirs'])
 AC_OUTPUT
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index df4331fbad0..35f02bbe970 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -16333,7 +16333,7 @@ as a parameter of @code{free} call or compared with 
@code{NULL}.  If
 with @option{-fmalloc-dce=2} also comparisons with @code{NULL} pointer are
 considered safe to remove.
 
-The default is @option{-fmalloc-dce=2}.  See also @option{-fallocation-dce}. 
+The default is @option{-fmalloc-dce=2}.  See also @option{-fallocation-dce}.
 
 @opindex fmove-loop-invariants
 @item -fmove-loop-invariants
@@ -19758,6 +19758,10 @@ Use the LLVM @command{lld} linker instead of the 
default linker.
 @item -fuse-ld=mold
 Use the Modern Linker (@command{mold}) instead of the default linker.
 
+@opindex fuse-ld=wild
+@item -fuse-ld=wild
+Use the Wild linker (@command{wild}) instead of the default linker.
+
 @cindex Libraries
 @opindex l
 @item -l@var{library}
diff --git a/gcc/gcc.cc b/gcc/gcc.cc
index eae7f07d962..7967baca2da 100644
--- a/gcc/gcc.cc
+++ b/gcc/gcc.cc
@@ -4290,6 +4290,11 @@ driver_handle_option (struct gcc_options *opts,
        use_ld = ".mold";
        break;
 
+    case OPT_fuse_ld_wild:
+       use_ld = ".wild";
+       break;
+
+
     case OPT_fcompare_debug_second:
       compare_debug_second = 1;
       break;
diff --git a/gcc/opts.cc b/gcc/opts.cc
index ceb1e0f445b..38f96efe766 100644
--- a/gcc/opts.cc
+++ b/gcc/opts.cc
@@ -3382,6 +3382,7 @@ common_handle_option (struct gcc_options *opts,
     case OPT_fuse_ld_gold:
     case OPT_fuse_ld_lld:
     case OPT_fuse_ld_mold:
+    case OPT_fuse_ld_wild:
     case OPT_fuse_linker_plugin:
       /* No-op. Used by the driver and passed to us because it starts with f.*/
       break;
diff --git a/libatomic/acinclude.m4 b/libatomic/acinclude.m4
index f35ab5b60a5..181233f1b56 100644
--- a/libatomic/acinclude.m4
+++ b/libatomic/acinclude.m4
@@ -300,6 +300,7 @@ dnl Sets:
 dnl  with_gnu_ld
 dnl  libat_ld_is_gold (possibly)
 dnl  libat_ld_is_mold (possibly)
+dnl  libat_ld_is_wild (possibly)
 dnl  libat_gnu_ld_version (possibly)
 dnl
 dnl The last will be a single integer, e.g., version 1.23.45.0.67.89 will
@@ -333,10 +334,13 @@ AC_DEFUN([LIBAT_CHECK_LINKER_FEATURES], [
   # does some of this, but throws away the result.
   libat_ld_is_gold=no
   libat_ld_is_mold=no
+  libat_ld_is_wild=no
   if $LD --version 2>/dev/null | grep 'GNU gold'> /dev/null 2>&1; then
     libat_ld_is_gold=yes
   elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
     libat_ld_is_mold=yes
+  elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+    libat_ld_is_wild=yes
   fi
   changequote(,)
   ldver=`$LD --version 2>/dev/null |
@@ -494,6 +498,8 @@ if test $enable_symvers != no && test $libat_shared_libgcc 
= yes; then
       enable_symvers=gnu
     elif test $libat_ld_is_mold = yes ; then
       enable_symvers=gnu
+    elif test $libat_ld_is_wild = yes ; then
+      enable_symvers=gnu
     else
       # The right tools, the right setup, but too old.  Fallbacks?
       AC_MSG_WARN(=== Linker version $libat_gnu_ld_version is too old for)
diff --git a/libatomic/configure b/libatomic/configure
index b6bd456f015..dd0f0867356 100755
--- a/libatomic/configure
+++ b/libatomic/configure
@@ -15688,10 +15688,13 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
   # does some of this, but throws away the result.
   libat_ld_is_gold=no
   libat_ld_is_mold=no
+  libat_ld_is_wild=no
   if $LD --version 2>/dev/null | grep 'GNU gold'> /dev/null 2>&1; then
     libat_ld_is_gold=yes
   elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
     libat_ld_is_mold=yes
+  elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+    libat_ld_is_wild=yes
   fi
 
   ldver=`$LD --version 2>/dev/null |
@@ -15896,6 +15899,8 @@ if test $enable_symvers != no && test 
$libat_shared_libgcc = yes; then
       enable_symvers=gnu
     elif test $libat_ld_is_mold = yes ; then
       enable_symvers=gnu
+    elif test $libat_ld_is_wild = yes ; then
+      enable_symvers=gnu
     else
       # The right tools, the right setup, but too old.  Fallbacks?
       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Linker version 
$libat_gnu_ld_version is too old for" >&5
diff --git a/libgomp/acinclude.m4 b/libgomp/acinclude.m4
index 12fbb20066c..94820595996 100644
--- a/libgomp/acinclude.m4
+++ b/libgomp/acinclude.m4
@@ -118,6 +118,7 @@ dnl Sets:
 dnl  with_gnu_ld
 dnl  libgomp_ld_is_gold (possibly)
 dnl  libgomp_ld_is_mold (possibly)
+dnl  libgomp_ld_is_wild (possibly)
 dnl  libgomp_gnu_ld_version (possibly)
 dnl
 dnl The last will be a single integer, e.g., version 1.23.45.0.67.89 will
@@ -151,10 +152,13 @@ AC_DEFUN([LIBGOMP_CHECK_LINKER_FEATURES], [
   # does some of this, but throws away the result.
   libgomp_ld_is_gold=no
   libgomp_ld_is_mold=no
+  libgomp_ld_is_wild=no
   if $LD --version 2>/dev/null | grep 'GNU gold'> /dev/null 2>&1; then
     libgomp_ld_is_gold=yes
   elif $LD --version 2>/dev/null | grep 'mold'> /dev/null 2>&1; then
     libgomp_ld_is_mold=yes
+  elif $LD --version 2>/dev/null | grep 'Wild'> /dev/null 2>&1; then
+    libgomp_ld_is_wild=yes
   fi
   changequote(,)
   ldver=`$LD --version 2>/dev/null |
@@ -312,6 +316,8 @@ if test $enable_symvers != no && test 
$libgomp_shared_libgcc = yes; then
       enable_symvers=gnu
     elif test $libgomp_ld_is_mold = yes ; then
       enable_symvers=gnu
+    elif test $libgomp_ld_is_wild = yes ; then
+      enable_symvers=gnu
     else
       # The right tools, the right setup, but too old.  Fallbacks?
       AC_MSG_WARN(=== Linker version $libgomp_gnu_ld_version is too old for)
diff --git a/libgomp/configure b/libgomp/configure
index f522a6e5d27..da48c833413 100755
--- a/libgomp/configure
+++ b/libgomp/configure
@@ -16544,10 +16544,13 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
   # does some of this, but throws away the result.
   libgomp_ld_is_gold=no
   libgomp_ld_is_mold=no
+  libgomp_ld_is_wild=no
   if $LD --version 2>/dev/null | grep 'GNU gold'> /dev/null 2>&1; then
     libgomp_ld_is_gold=yes
   elif $LD --version 2>/dev/null | grep 'mold'> /dev/null 2>&1; then
     libgomp_ld_is_mold=yes
+  elif $LD --version 2>/dev/null | grep 'Wild'> /dev/null 2>&1; then
+    libgomp_ld_is_wild=yes
   fi
 
   ldver=`$LD --version 2>/dev/null |
@@ -16752,6 +16755,8 @@ if test $enable_symvers != no && test 
$libgomp_shared_libgcc = yes; then
       enable_symvers=gnu
     elif test $libgomp_ld_is_mold = yes ; then
       enable_symvers=gnu
+    elif test $libgomp_ld_is_wild = yes ; then
+      enable_symvers=gnu
     else
       # The right tools, the right setup, but too old.  Fallbacks?
       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Linker version 
$libgomp_gnu_ld_version is too old for" >&5
diff --git a/libitm/acinclude.m4 b/libitm/acinclude.m4
index 9fd12e6ee7d..73ab59927c0 100644
--- a/libitm/acinclude.m4
+++ b/libitm/acinclude.m4
@@ -211,6 +211,7 @@ dnl Sets:
 dnl  with_gnu_ld
 dnl  libitm_ld_is_gold (possibly)
 dnl  libitm_ld_is_mold (possibly)
+dnl  libitm_ld_is_wild (possibly)
 dnl  libitm_gnu_ld_version (possibly)
 dnl
 dnl The last will be a single integer, e.g., version 1.23.45.0.67.89 will
@@ -244,10 +245,13 @@ AC_DEFUN([LIBITM_CHECK_LINKER_FEATURES], [
   # does some of this, but throws away the result.
   libitm_ld_is_gold=no
   libitm_ld_is_mold=no
+  libitm_ld_is_wild=no
   if $LD --version 2>/dev/null | grep 'GNU gold'> /dev/null 2>&1; then
     libitm_ld_is_gold=yes
   elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
     libitm_ld_is_mold=yes
+  elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+    libitm_ld_is_wild=yes
   fi
   changequote(,)
   ldver=`$LD --version 2>/dev/null |
@@ -405,6 +409,8 @@ if test $enable_symvers != no && test $libitm_shared_libgcc 
= yes; then
       enable_symvers=gnu
     elif test $libitm_ld_is_mold = yes ; then
       enable_symvers=gnu
+    elif test $libitm_ld_is_wild = yes ; then
+      enable_symvers=gnu
     else
       # The right tools, the right setup, but too old.  Fallbacks?
       AC_MSG_WARN(=== Linker version $libitm_gnu_ld_version is too old for)
diff --git a/libitm/configure b/libitm/configure
index c655a9bf0ad..005d67814f5 100755
--- a/libitm/configure
+++ b/libitm/configure
@@ -17604,10 +17604,13 @@ fi
   # does some of this, but throws away the result.
   libitm_ld_is_gold=no
   libitm_ld_is_mold=no
+  libitm_ld_is_wild=no
   if $LD --version 2>/dev/null | grep 'GNU gold'> /dev/null 2>&1; then
     libitm_ld_is_gold=yes
   elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
     libitm_ld_is_mold=yes
+  elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+    libitm_ld_is_wild=yes
   fi
 
   ldver=`$LD --version 2>/dev/null |
@@ -17812,6 +17815,8 @@ if test $enable_symvers != no && test 
$libitm_shared_libgcc = yes; then
       enable_symvers=gnu
     elif test $libitm_ld_is_mold = yes ; then
       enable_symvers=gnu
+    elif test $libitm_ld_is_wild = yes ; then
+      enable_symvers=gnu
     else
       # The right tools, the right setup, but too old.  Fallbacks?
       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Linker version 
$libitm_gnu_ld_version is too old for" >&5
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index d040e8d30be..d68dbf7bcd4 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -173,6 +173,7 @@ dnl Sets:
 dnl  with_gnu_ld
 dnl  glibcxx_ld_is_gold (set to "no" or "yes")
 dnl  glibcxx_ld_is_mold (set to "no" or "yes")
+dnl  glibcxx_ld_is_wild (set to "no" or "yes")
 dnl  glibcxx_gnu_ld_version (possibly)
 dnl
 dnl The last will be a single integer, e.g., version 1.23.45.0.67.89 will
@@ -206,6 +207,7 @@ AC_DEFUN([GLIBCXX_CHECK_LINKER_FEATURES], [
   # does some of this, but throws away the result.
   glibcxx_ld_is_gold=no
   glibcxx_ld_is_mold=no
+  glibcxx_ld_is_wild=no
   if test x"$with_gnu_ld" = x"yes"; then
     AC_MSG_CHECKING([for ld version])
     changequote(,)
@@ -213,6 +215,8 @@ AC_DEFUN([GLIBCXX_CHECK_LINKER_FEATURES], [
       glibcxx_ld_is_gold=yes
     elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
       glibcxx_ld_is_mold=yes
+    elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+      glibcxx_ld_is_wild=yes
     fi
     ldver=`$LD --version 2>/dev/null |
           sed -e 's/[. ][0-9]\{8\}$//;s/.* \([^ ]\{1,\}\)$/\1/; q'`
@@ -224,7 +228,7 @@ AC_DEFUN([GLIBCXX_CHECK_LINKER_FEATURES], [
 
   # Set --gc-sections.
   glibcxx_have_gc_sections=no
-  if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" 
; then
+  if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" 
|| test "$glibcxx_ld_is_wild" = "yes" ; then
     if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
       glibcxx_have_gc_sections=yes
     fi
@@ -4063,6 +4067,8 @@ changequote([,])dnl
     : All versions of gold support symbol versioning.
   elif test $glibcxx_ld_is_mold = yes ; then
     : All versions of mold support symbol versioning.
+  elif test $glibcxx_ld_is_wild = yes ; then
+    : All versions of Wild support symbol versioning.
   elif test $glibcxx_gnu_ld_version -lt $glibcxx_min_gnu_ld_version ; then
     # The right tools, the right setup, but too old.  Fallbacks?
     AC_MSG_WARN(=== Linker version $glibcxx_gnu_ld_version is too old for)
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 420391e9340..3509947753a 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -23068,6 +23068,7 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
   # does some of this, but throws away the result.
   glibcxx_ld_is_gold=no
   glibcxx_ld_is_mold=no
+  glibcxx_ld_is_wild=no
   if test x"$with_gnu_ld" = x"yes"; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
 $as_echo_n "checking for ld version... " >&6; }
@@ -23076,6 +23077,8 @@ $as_echo_n "checking for ld version... " >&6; }
       glibcxx_ld_is_gold=yes
     elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
       glibcxx_ld_is_mold=yes
+    elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+      glibcxx_ld_is_wild=yes
     fi
     ldver=`$LD --version 2>/dev/null |
           sed -e 's/[. ][0-9]\{8\}$//;s/.* \([^ ]\{1,\}\)$/\1/; q'`
@@ -23088,7 +23091,7 @@ $as_echo "$glibcxx_gnu_ld_version" >&6; }
 
   # Set --gc-sections.
   glibcxx_have_gc_sections=no
-  if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" 
; then
+  if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" 
|| test "$glibcxx_ld_is_wild" = "yes" ; then
     if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
       glibcxx_have_gc_sections=yes
     fi
@@ -28936,6 +28939,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
   # does some of this, but throws away the result.
   glibcxx_ld_is_gold=no
   glibcxx_ld_is_mold=no
+  glibcxx_ld_is_wild=no
   if test x"$with_gnu_ld" = x"yes"; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
 $as_echo_n "checking for ld version... " >&6; }
@@ -28944,6 +28948,8 @@ $as_echo_n "checking for ld version... " >&6; }
       glibcxx_ld_is_gold=yes
     elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
       glibcxx_ld_is_mold=yes
+    elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+      glibcxx_ld_is_wild=yes
     fi
     ldver=`$LD --version 2>/dev/null |
           sed -e 's/[. ][0-9]\{8\}$//;s/.* \([^ ]\{1,\}\)$/\1/; q'`
@@ -28956,7 +28962,7 @@ $as_echo "$glibcxx_gnu_ld_version" >&6; }
 
   # Set --gc-sections.
   glibcxx_have_gc_sections=no
-  if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" 
; then
+  if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" 
|| test "$glibcxx_ld_is_wild" = "yes" ; then
     if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
       glibcxx_have_gc_sections=yes
     fi
@@ -32115,6 +32121,7 @@ done
   # does some of this, but throws away the result.
   glibcxx_ld_is_gold=no
   glibcxx_ld_is_mold=no
+  glibcxx_ld_is_wild=no
   if test x"$with_gnu_ld" = x"yes"; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
 $as_echo_n "checking for ld version... " >&6; }
@@ -32123,6 +32130,8 @@ $as_echo_n "checking for ld version... " >&6; }
       glibcxx_ld_is_gold=yes
     elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
       glibcxx_ld_is_mold=yes
+    elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+      glibcxx_ld_is_wild=yes
     fi
     ldver=`$LD --version 2>/dev/null |
           sed -e 's/[. ][0-9]\{8\}$//;s/.* \([^ ]\{1,\}\)$/\1/; q'`
@@ -32135,7 +32144,7 @@ $as_echo "$glibcxx_gnu_ld_version" >&6; }
 
   # Set --gc-sections.
   glibcxx_have_gc_sections=no
-  if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" 
; then
+  if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" 
|| test "$glibcxx_ld_is_wild" = "yes" ; then
     if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
       glibcxx_have_gc_sections=yes
     fi
@@ -38333,6 +38342,7 @@ done
   # does some of this, but throws away the result.
   glibcxx_ld_is_gold=no
   glibcxx_ld_is_mold=no
+  glibcxx_ld_is_wild=no
   if test x"$with_gnu_ld" = x"yes"; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
 $as_echo_n "checking for ld version... " >&6; }
@@ -38341,6 +38351,8 @@ $as_echo_n "checking for ld version... " >&6; }
       glibcxx_ld_is_gold=yes
     elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
       glibcxx_ld_is_mold=yes
+    elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+      glibcxx_ld_is_wild=yes
     fi
     ldver=`$LD --version 2>/dev/null |
           sed -e 's/[. ][0-9]\{8\}$//;s/.* \([^ ]\{1,\}\)$/\1/; q'`
@@ -38353,7 +38365,7 @@ $as_echo "$glibcxx_gnu_ld_version" >&6; }
 
   # Set --gc-sections.
   glibcxx_have_gc_sections=no
-  if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" 
; then
+  if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" 
|| test "$glibcxx_ld_is_wild" = "yes" ; then
     if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
       glibcxx_have_gc_sections=yes
     fi
@@ -38621,6 +38633,7 @@ done
   # does some of this, but throws away the result.
   glibcxx_ld_is_gold=no
   glibcxx_ld_is_mold=no
+  glibcxx_ld_is_wild=no
   if test x"$with_gnu_ld" = x"yes"; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
 $as_echo_n "checking for ld version... " >&6; }
@@ -38629,6 +38642,8 @@ $as_echo_n "checking for ld version... " >&6; }
       glibcxx_ld_is_gold=yes
     elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
       glibcxx_ld_is_mold=yes
+    elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+      glibcxx_ld_is_wild=yes
     fi
     ldver=`$LD --version 2>/dev/null |
           sed -e 's/[. ][0-9]\{8\}$//;s/.* \([^ ]\{1,\}\)$/\1/; q'`
@@ -38641,7 +38656,7 @@ $as_echo "$glibcxx_gnu_ld_version" >&6; }
 
   # Set --gc-sections.
   glibcxx_have_gc_sections=no
-  if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" 
; then
+  if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" 
|| test "$glibcxx_ld_is_wild" = "yes" ; then
     if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
       glibcxx_have_gc_sections=yes
     fi
@@ -39086,6 +39101,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
   # does some of this, but throws away the result.
   glibcxx_ld_is_gold=no
   glibcxx_ld_is_mold=no
+  glibcxx_ld_is_wild=no
   if test x"$with_gnu_ld" = x"yes"; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
 $as_echo_n "checking for ld version... " >&6; }
@@ -39094,6 +39110,8 @@ $as_echo_n "checking for ld version... " >&6; }
       glibcxx_ld_is_gold=yes
     elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
       glibcxx_ld_is_mold=yes
+    elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+      glibcxx_ld_is_wild=yes
     fi
     ldver=`$LD --version 2>/dev/null |
           sed -e 's/[. ][0-9]\{8\}$//;s/.* \([^ ]\{1,\}\)$/\1/; q'`
@@ -39106,7 +39124,7 @@ $as_echo "$glibcxx_gnu_ld_version" >&6; }
 
   # Set --gc-sections.
   glibcxx_have_gc_sections=no
-  if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" 
; then
+  if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" 
|| test "$glibcxx_ld_is_wild" = "yes" ; then
     if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
       glibcxx_have_gc_sections=yes
     fi
@@ -42528,6 +42546,7 @@ done
   # does some of this, but throws away the result.
   glibcxx_ld_is_gold=no
   glibcxx_ld_is_mold=no
+  glibcxx_ld_is_wild=no
   if test x"$with_gnu_ld" = x"yes"; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
 $as_echo_n "checking for ld version... " >&6; }
@@ -42536,6 +42555,8 @@ $as_echo_n "checking for ld version... " >&6; }
       glibcxx_ld_is_gold=yes
     elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
       glibcxx_ld_is_mold=yes
+    elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+      glibcxx_ld_is_wild=yes
     fi
     ldver=`$LD --version 2>/dev/null |
           sed -e 's/[. ][0-9]\{8\}$//;s/.* \([^ ]\{1,\}\)$/\1/; q'`
@@ -42548,7 +42569,7 @@ $as_echo "$glibcxx_gnu_ld_version" >&6; }
 
   # Set --gc-sections.
   glibcxx_have_gc_sections=no
-  if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" 
; then
+  if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" 
|| test "$glibcxx_ld_is_wild" = "yes" ; then
     if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
       glibcxx_have_gc_sections=yes
     fi
@@ -45923,6 +45944,7 @@ $as_echo "#define HAVE_TLS 1" >>confdefs.h
   # does some of this, but throws away the result.
   glibcxx_ld_is_gold=no
   glibcxx_ld_is_mold=no
+  glibcxx_ld_is_wild=no
   if test x"$with_gnu_ld" = x"yes"; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
 $as_echo_n "checking for ld version... " >&6; }
@@ -45931,6 +45953,8 @@ $as_echo_n "checking for ld version... " >&6; }
       glibcxx_ld_is_gold=yes
     elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
       glibcxx_ld_is_mold=yes
+    elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+      glibcxx_ld_is_wild=yes
     fi
     ldver=`$LD --version 2>/dev/null |
           sed -e 's/[. ][0-9]\{8\}$//;s/.* \([^ ]\{1,\}\)$/\1/; q'`
@@ -45943,7 +45967,7 @@ $as_echo "$glibcxx_gnu_ld_version" >&6; }
 
   # Set --gc-sections.
   glibcxx_have_gc_sections=no
-  if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" 
; then
+  if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" 
|| test "$glibcxx_ld_is_wild" = "yes" ; then
     if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
       glibcxx_have_gc_sections=yes
     fi
@@ -46136,6 +46160,7 @@ done
   # does some of this, but throws away the result.
   glibcxx_ld_is_gold=no
   glibcxx_ld_is_mold=no
+  glibcxx_ld_is_wild=no
   if test x"$with_gnu_ld" = x"yes"; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld version" >&5
 $as_echo_n "checking for ld version... " >&6; }
@@ -46144,6 +46169,8 @@ $as_echo_n "checking for ld version... " >&6; }
       glibcxx_ld_is_gold=yes
     elif $LD --version 2>/dev/null | grep 'mold' >/dev/null 2>&1; then
       glibcxx_ld_is_mold=yes
+    elif $LD --version 2>/dev/null | grep 'Wild' >/dev/null 2>&1; then
+      glibcxx_ld_is_wild=yes
     fi
     ldver=`$LD --version 2>/dev/null |
           sed -e 's/[. ][0-9]\{8\}$//;s/.* \([^ ]\{1,\}\)$/\1/; q'`
@@ -46156,7 +46183,7 @@ $as_echo "$glibcxx_gnu_ld_version" >&6; }
 
   # Set --gc-sections.
   glibcxx_have_gc_sections=no
-  if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" 
; then
+  if test "$glibcxx_ld_is_gold" = "yes" || test "$glibcxx_ld_is_mold" = "yes" 
|| test "$glibcxx_ld_is_wild" = "yes" ; then
     if $LD --help 2>/dev/null | grep gc-sections >/dev/null 2>&1; then
       glibcxx_have_gc_sections=yes
     fi
@@ -51196,6 +51223,8 @@ $as_echo "$as_me: WARNING: === Symbol versioning will 
be disabled." >&2;}
     : All versions of gold support symbol versioning.
   elif test $glibcxx_ld_is_mold = yes ; then
     : All versions of mold support symbol versioning.
+  elif test $glibcxx_ld_is_wild = yes ; then
+    : All versions of Wild support symbol versioning.
   elif test $glibcxx_gnu_ld_version -lt $glibcxx_min_gnu_ld_version ; then
     # The right tools, the right setup, but too old.  Fallbacks?
     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Linker version 
$glibcxx_gnu_ld_version is too old for" >&5
@@ -53940,7 +53969,7 @@ $as_echo "$glibcxx_cv_libbacktrace_atomics" >&6; }
     CXXFLAGS='-O0 -S'
 
     cat > conftest.$ac_ext << EOF
-#line 53943 "configure"
+#line 53972 "configure"
 #include <stddef.h>
 int main()
 {
-- 
2.51.2


Reply via email to