gcc/configure.ac contains many inline checks if an in-tree gld is of a
version recent enough to enable some feature.

The checks are highly repetitive and hard to read, so this patch
replaces them by two shell functions, gcc_fn_gld_min_version and
gcc_fn_gld_elf_min_version.  Both configure.ac and the scripts generated
by autoconf already heavily use shell functions, so they are no
portability problem.

Tested on x86_64-pc-linux-gnu as follows:

* Bootstrap with out-of-tree gas/gld.

* Non-bootstrap builds with

** the bundled gas/gld (2.44),

** in-tree binutils trunk (2.46.50), and

** fake in-tree builds where bfd/configure and ld/configure were hacked
   to pose as gld 2.9 and 2.16 respecively.

Initially a full in-tree build was run.  Afterwards, the gcc directory
was moved aside, recreated with make configure-gcc, and the resulting
versions of auto-host.h compared.  Besides, the differences between the
various linker versions were as expected.

Ok for trunk?


As originally described in

        https://gcc.gnu.org/pipermail/gcc-patches/2026-May/715543.html

those version checks are for versions as ancient as binutils 2.10 from
2000, with many versions in between up to 2.44.  I'm pretty certain that
no one still tests with such prehistoric binutils version, so wonder if
we shouldn't require a minimum binutils version for GCC.

This would allow to remove many of those in-tree version checks and
remove similar version checks for out-of-tree gld.

E.g. for GCC 16 I require binutils 2.30 at least on Solaris.  Even that
version goes back to 2018, so by the time GCC 17 is released it will be
9 years old.  Maybe that's an option for GCC as a whole?

Besides, I wonder how common builds with in-tree binutils are these
days.  Given that gcc and binutils-gdb no longer share a single source
tree, the include directory has diverged to some degree and requires
merging for the build to work at all.

Thanks.
        Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University


2026-05-08  Rainer Orth  <[email protected]>

        gcc:
        * configure.ac (gcc_fn_gld_min_version): New function.
        (gcc_fn_gld_elf_min_version): Likewise.
        Use them.
        * configure: Regenerate.

# HG changeset patch
# Parent  141866a9f8620d32463d01cf1042201b99b6e547
build: Simplify in-tree-gld checks

diff --git a/gcc/configure b/gcc/configure
--- a/gcc/configure
+++ b/gcc/configure
@@ -26713,6 +26713,27 @@ if test $in_tree_ld != yes ; then
   fi
 fi
 
+# Check if an in-tree gld is at least at version major, minor.
+gcc_fn_gld_min_version () {
+  if test "$gcc_cv_gld_major_version" -eq $1 \
+          -a "$gcc_cv_gld_minor_version" -ge $2 \
+          -o "$gcc_cv_gld_major_version" -gt $1; then
+    return 0;
+  fi
+  return 1;
+}
+
+# Check if an in-tree gld is ELF and at least at version major, minor.
+gcc_fn_gld_elf_min_version ()
+{
+  if gcc_fn_gld_min_version "$1" "$2"; then
+    if test $in_tree_ld_is_elf = yes; then
+      return 0
+    fi
+  fi
+  return 1
+}
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking linker for .hidden support" >&5
 $as_echo_n "checking linker for .hidden support... " >&6; }
 if ${gcc_cv_ld_hidden+:} false; then :
@@ -26720,8 +26741,7 @@ if ${gcc_cv_ld_hidden+:} false; then :
 else
   if test $in_tree_ld = yes ; then
   gcc_cv_ld_hidden=no
-  if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 13 -o "$gcc_cv_gld_major_version" -gt 2 \
-     && test $in_tree_ld_is_elf = yes; then
+  if gcc_fn_gld_elf_min_version 2 13; then
      gcc_cv_ld_hidden=yes
   fi
 else
@@ -26813,8 +26833,7 @@ $as_echo "$gcc_cv_ld_at_file" >&6; }
 $as_echo_n "checking linker read-only and read-write section mixing... " >&6; }
 gcc_cv_ld_ro_rw_mix=unknown
 if test $in_tree_ld = yes ; then
-  if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10 -o "$gcc_cv_gld_major_version" -gt 2 \
-     && test $in_tree_ld_is_elf = yes; then
+  if gcc_fn_gld_elf_min_version 2 10; then
     gcc_cv_ld_ro_rw_mix=read-write
   fi
 elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x -a x"$gcc_cv_objdump" != x ; then
@@ -27878,8 +27897,7 @@ 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 \
-     && test $in_tree_ld_is_elf = yes; then
+  if gcc_fn_gld_elf_min_version 2 16; then
      comdat_group=yes
   fi
 elif echo "$ld_ver" | grep GNU > /dev/null; then
@@ -28417,7 +28435,7 @@ case $target_os in
     if test $set_have_as_tls = yes; then
       # Hack to check whether ld breaks on @secrel32 for Windows
       if test $in_tree_ld = yes; then
-	if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 44 -o "$gcc_cv_gld_major_version" -gt 2; then
+        if gcc_fn_gld_min_version 2 44; then
 	  : # ld support for @secrel32 was fixed in this version
 	else
 	  as_fn_error $? "ld version is known to have broken secrel32 relocations, configure without --enable-tls or with --disable-tls to remove this error. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80881 for more information." "$LINENO" 5
@@ -28455,7 +28473,7 @@ gcc_cv_ld_static_dynamic=no
 gcc_cv_ld_static_option='-Bstatic'
 gcc_cv_ld_dynamic_option='-Bdynamic'
 if test $in_tree_ld = yes ; then
-  if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10 -o "$gcc_cv_gld_major_version" -gt 2; then
+  if gcc_fn_gld_min_version 2 10; then
     gcc_cv_ld_static_dynamic=yes
   fi
 elif test x$gcc_cv_ld != x; then
@@ -28561,7 +28579,7 @@ if test x"$demangler_in_ld" = xyes; then
 $as_echo_n "checking linker --demangle support... " >&6; }
   gcc_cv_ld_demangle=no
   if test $in_tree_ld = yes; then
-    if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 14 -o "$gcc_cv_gld_major_version" -gt 2; then \
+    if gcc_fn_gld_min_version 2 14; then
       gcc_cv_ld_demangle=yes
     fi
   elif test x$gcc_cv_ld != x; then
@@ -30976,8 +30994,7 @@ $as_echo_n "checking assembler and linke
     gcc_cv_as_ld_jalr_reloc=no
     if test $gcc_cv_as_mips_explicit_relocs = yes; then
       if test $in_tree_ld = yes ; then
-        if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 20 -o "$gcc_cv_gld_major_version" -gt 2 \
-           && test $in_tree_ld_is_elf = yes; then
+        if gcc_fn_gld_elf_min_version 2 20; then
           gcc_cv_as_ld_jalr_reloc=yes
         fi
       elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x -a x"$gcc_cv_objdump" != x; then
@@ -31016,9 +31033,7 @@ if ${gcc_cv_ld_mips_personality_relaxati
 else
   gcc_cv_ld_mips_personality_relaxation=no
        if test $in_tree_ld = yes ; then
-	 if test "$gcc_cv_gld_major_version" -eq 2 \
-		 -a "$gcc_cv_gld_minor_version" -ge 21 \
-		 -o "$gcc_cv_gld_major_version" -gt 2; then
+         if gcc_fn_gld_min_version 2 21; then
 	   gcc_cv_ld_mips_personality_relaxation=yes
 	 fi
        elif test x"$gcc_cv_as" != x \
@@ -32682,8 +32697,7 @@ $as_echo "$thin_archive_support" >&6; }
 $as_echo_n "checking linker PT_GNU_EH_FRAME support... " >&6; }
 gcc_cv_ld_eh_frame_hdr=no
 if test $in_tree_ld = yes ; then
-  if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 12 -o "$gcc_cv_gld_major_version" -gt 2 \
-     && test $in_tree_ld_is_elf = yes; then
+  if gcc_fn_gld_elf_min_version 2 12; then
     gcc_cv_ld_eh_frame_hdr=yes
   fi
 elif test x$gcc_cv_ld != x; then
@@ -32713,9 +32727,7 @@ $as_echo "$gcc_cv_ld_eh_frame_hdr" >&6; 
 $as_echo_n "checking linker position independent executable support... " >&6; }
 gcc_cv_ld_pie=no
 if test $in_tree_ld = yes ; then
-  gcc_gld_pie_min_version=15
-  if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge "$gcc_gld_pie_min_version" -o "$gcc_cv_gld_major_version" -gt 2 \
-     && test $in_tree_ld_is_elf = yes; then
+  if gcc_fn_gld_elf_min_version 2 15; then
     gcc_cv_ld_pie=yes
   fi
 elif test x$gcc_cv_ld != x; then
@@ -32744,7 +32756,7 @@ $as_echo_n "checking linker PIE support 
 gcc_cv_ld_pie_copyreloc=no
 if test $gcc_cv_ld_pie = yes ; then
   if test $in_tree_ld = yes ; then
-    if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 25 -o "$gcc_cv_gld_major_version" -gt 2; then
+    if gcc_fn_gld_min_version 2 25; then
       gcc_cv_ld_pie_copyreloc=yes
     fi
   elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x ; then
@@ -32795,8 +32807,7 @@ $as_echo "$gcc_cv_ld_pie_copyreloc" >&6;
 $as_echo_n "checking linker EH-compatible garbage collection of sections... " >&6; }
 gcc_cv_ld_eh_gc_sections=no
 if test $in_tree_ld = yes ; then
-  if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 17 -o "$gcc_cv_gld_major_version" -gt 2 \
-     && test $in_tree_ld_is_elf = yes; then
+  if gcc_fn_gld_elf_min_version 2 17; then
     gcc_cv_ld_eh_gc_sections=yes
   fi
 elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x -a x"$gcc_cv_objdump" != x ; then
@@ -32878,8 +32889,9 @@ $as_echo "$gcc_cv_ld_eh_gc_sections" >&6
 $as_echo_n "checking linker EH garbage collection of sections bug... " >&6; }
 gcc_cv_ld_eh_gc_sections_bug=no
 if test $in_tree_ld = yes ; then
-  if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -lt 19 -o "$gcc_cv_gld_major_version" -lt 2 \
-     && test $in_tree_ld_is_elf = yes; then
+  if gcc_fn_gld_elf_min_version 2 19; then
+    :
+  else
     gcc_cv_ld_eh_gc_sections_bug=yes
   fi
 elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x -a x"$gcc_cv_objdump" != x -a x$gcc_cv_as_comdat_group = xyes; then
@@ -33195,7 +33207,7 @@ $as_echo "$gcc_cv_ld_broken_pe_dwarf5" >
 $as_echo_n "checking PE linker --disable-dynamicbase support... " >&6; }
     gcc_cv_ld_disable_dynamicbase=no
     if test $in_tree_ld = yes; then
-      if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 36 -o "$gcc_cv_gld_major_version" -gt 2; then \
+      if gcc_fn_gld_min_version 2 36; then
         gcc_cv_ld_disable_dynamicbase=yes
       fi
     else
@@ -33227,11 +33239,10 @@ gcc_cv_ld_as_needed_option='--as-needed'
 gcc_cv_ld_no_as_needed_option='--no-as-needed'
 gcc_cv_ld_use_as_needed_ldscript=no
 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
+  if gcc_fn_gld_elf_min_version 2 16; then
     gcc_cv_ld_as_needed=yes
     gcc_cv_ld_use_as_needed_ldscript=yes
-    if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 28; then
+    if gcc_fn_gld_min_version 2 28; then
       gcc_cv_ld_as_needed_option='--push-state --as-needed'
       gcc_cv_ld_no_as_needed_option='--pop-state'
     fi
@@ -33333,9 +33344,7 @@ else
     if test x"$ld_is_gold" = xyes; then
       gcc_cv_ld_ppc_attr=yes
     elif test $in_tree_ld = yes ; then
-      if test "$gcc_cv_gld_major_version" -eq 2 \
-		-a "$gcc_cv_gld_minor_version" -ge 28 \
-		-o "$gcc_cv_gld_major_version" -gt 2; then
+      if gcc_fn_gld_min_version 2 28; then
         gcc_cv_ld_ppc_attr=yes
       fi
     elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x ; then
@@ -33391,7 +33400,7 @@ else
     if test x"$ld_is_gold" = xyes; then
       gcc_cv_ld_no_dot_syms=yes
     elif 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; then
+      if gcc_fn_gld_min_version 2 16; then
         gcc_cv_ld_no_dot_syms=yes
       fi
     elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x ; then
@@ -33437,7 +33446,7 @@ else
     if test x"$ld_is_gold" = xyes; then
       gcc_cv_ld_large_toc=yes
     elif test $in_tree_ld = yes ; then
-      if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 21 -o "$gcc_cv_gld_major_version" -gt 2; then
+      if gcc_fn_gld_min_version 2 21; then
         gcc_cv_ld_large_toc=yes
       fi
     elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x ; then
@@ -33546,10 +33555,7 @@ if ${gcc_cv_ld_buildid+:} false; then :
 else
   gcc_cv_ld_buildid=no
   if test $in_tree_ld = yes ; then
-    if test "$gcc_cv_gld_major_version" -eq 2 -a \
-       "$gcc_cv_gld_minor_version" -ge 18 -o \
-       "$gcc_cv_gld_major_version" -gt 2 \
-       && test $in_tree_ld_is_elf = yes; then
+    if gcc_fn_gld_elf_min_version 2 18; then
       gcc_cv_ld_buildid=yes
     fi
   elif test x$gcc_cv_ld != x; then
@@ -33592,7 +33598,7 @@ if ${gcc_cv_ld_sysroot+:} false; then :
 else
   gcc_cv_ld_sysroot=no
   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 ; then
+      if gcc_fn_gld_min_version 2 16; then
         gcc_cv_ld_sysroot=yes
       fi
   elif test x$gcc_cv_ld != x; then
@@ -35065,7 +35071,7 @@ ld_bndplt_support=no
 $as_echo_n "checking linker -z bndplt option... " >&6; }
 if test x"$ld_is_gold" = xno; then
   if test $in_tree_ld = yes ; then
-    if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 25 -o "$gcc_cv_gld_major_version" -gt 2; then
+    if gcc_fn_gld_min_version 2 25; then
       ld_bndplt_support=yes
     fi
   elif test x$gcc_cv_ld != x; then
@@ -35089,7 +35095,7 @@ ld_pushpopstate_support=no
 $as_echo_n "checking linker --push-state/--pop-state options... " >&6; }
 if test x"$ld_is_gold" = xno; then
   if test $in_tree_ld = yes ; then
-    if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 25 -o "$gcc_cv_gld_major_version" -gt 2; then
+    if gcc_fn_gld_min_version 2 25; then
       ld_pushpopstate_support=yes
     fi
   elif test x$gcc_cv_ld != x; then
@@ -35311,7 +35317,7 @@ $as_echo_n "checking linker -z now optio
 if test x"$ld_is_gold" = xyes; then
   ld_now_support=yes
 elif test $in_tree_ld = yes ; then
-  if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 14 -o "$gcc_cv_gld_major_version" -gt 2; then
+  if gcc_fn_gld_min_version 2 14; then
     ld_now_support=yes
   fi
 elif test x$gcc_cv_ld != x; then
@@ -35335,7 +35341,7 @@ $as_echo_n "checking linker -z relro opt
 if test x"$ld_is_gold" = xyes; then
   ld_relro_support=yes
 elif test $in_tree_ld = yes ; then
-  if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 15 -o "$gcc_cv_gld_major_version" -gt 2; then
+  if gcc_fn_gld_min_version 2 15; then
     ld_relro_support=yes
   fi
 elif test x$gcc_cv_ld != x; then
diff --git a/gcc/configure.ac b/gcc/configure.ac
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -3327,11 +3327,31 @@ changequote(,)dnl
 fi
 changequote([,])dnl
 
+# Check if an in-tree gld is at least at version major, minor.
+gcc_fn_gld_min_version () {
+  if test "$gcc_cv_gld_major_version" -eq $1 \
+          -a "$gcc_cv_gld_minor_version" -ge $2 \
+          -o "$gcc_cv_gld_major_version" -gt $1; then
+    return 0;
+  fi
+  return 1;
+}
+
+# Check if an in-tree gld is ELF and at least at version major, minor.
+gcc_fn_gld_elf_min_version ()
+{
+  if gcc_fn_gld_min_version "$1" "$2"; then
+    if test $in_tree_ld_is_elf = yes; then
+      return 0
+    fi
+  fi
+  return 1
+}
+
 AC_CACHE_CHECK(linker for .hidden support, gcc_cv_ld_hidden,
 [[if test $in_tree_ld = yes ; then
   gcc_cv_ld_hidden=no
-  if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 13 -o "$gcc_cv_gld_major_version" -gt 2 \
-     && test $in_tree_ld_is_elf = yes; then
+  if gcc_fn_gld_elf_min_version 2 13; then
      gcc_cv_ld_hidden=yes
   fi
 else
@@ -3414,8 +3434,7 @@ AC_MSG_RESULT($gcc_cv_ld_at_file)
 AC_MSG_CHECKING(linker read-only and read-write section mixing)
 gcc_cv_ld_ro_rw_mix=unknown
 if test $in_tree_ld = yes ; then
-  if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10 -o "$gcc_cv_gld_major_version" -gt 2 \
-     && test $in_tree_ld_is_elf = yes; then
+  if gcc_fn_gld_elf_min_version 2 10; then
     gcc_cv_ld_ro_rw_mix=read-write
   fi
 elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x -a x"$gcc_cv_objdump" != x ; then
@@ -3844,8 +3863,7 @@ 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 \
-     && test $in_tree_ld_is_elf = yes; then
+  if gcc_fn_gld_elf_min_version 2 16; then
      comdat_group=yes
   fi
 elif echo "$ld_ver" | grep GNU > /dev/null; then
@@ -4305,7 +4323,7 @@ case $target_os in
     if test $set_have_as_tls = yes; then
       # Hack to check whether ld breaks on @secrel32 for Windows
       if test $in_tree_ld = yes; then
-	if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 44 -o "$gcc_cv_gld_major_version" -gt 2; then
+        if gcc_fn_gld_min_version 2 44; then
 	  : # ld support for @secrel32 was fixed in this version
 	else
 	  AC_MSG_ERROR([ld version is known to have broken secrel32 relocations, configure without --enable-tls or with --disable-tls to remove this error. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80881 for more information.])
@@ -4341,7 +4359,7 @@ gcc_cv_ld_static_dynamic=no
 gcc_cv_ld_static_option='-Bstatic'
 gcc_cv_ld_dynamic_option='-Bdynamic'
 if test $in_tree_ld = yes ; then
-  if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 10 -o "$gcc_cv_gld_major_version" -gt 2; then
+  if gcc_fn_gld_min_version 2 10; then
     gcc_cv_ld_static_dynamic=yes
   fi
 elif test x$gcc_cv_ld != x; then
@@ -4434,7 +4452,7 @@ if test x"$demangler_in_ld" = xyes; then
   AC_MSG_CHECKING(linker --demangle support)
   gcc_cv_ld_demangle=no
   if test $in_tree_ld = yes; then
-    if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 14 -o "$gcc_cv_gld_major_version" -gt 2; then \
+    if gcc_fn_gld_min_version 2 14; then
       gcc_cv_ld_demangle=yes
     fi
   elif test x$gcc_cv_ld != x; then
@@ -5352,8 +5370,7 @@ x:
     gcc_cv_as_ld_jalr_reloc=no
     if test $gcc_cv_as_mips_explicit_relocs = yes; then
       if test $in_tree_ld = yes ; then
-        if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 20 -o "$gcc_cv_gld_major_version" -gt 2 \
-           && test $in_tree_ld_is_elf = yes; then
+        if gcc_fn_gld_elf_min_version 2 20; then
           gcc_cv_as_ld_jalr_reloc=yes
         fi
       elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x -a x"$gcc_cv_objdump" != x; then
@@ -5388,9 +5405,7 @@ x:
       [gcc_cv_ld_mips_personality_relaxation],
       [gcc_cv_ld_mips_personality_relaxation=no
        if test $in_tree_ld = yes ; then
-	 if test "$gcc_cv_gld_major_version" -eq 2 \
-		 -a "$gcc_cv_gld_minor_version" -ge 21 \
-		 -o "$gcc_cv_gld_major_version" -gt 2; then
+         if gcc_fn_gld_min_version 2 21; then
 	   gcc_cv_ld_mips_personality_relaxation=yes
 	 fi
        elif test x"$gcc_cv_as" != x \
@@ -6082,8 +6097,7 @@ AC_SUBST(thin_archive_support)
 AC_MSG_CHECKING(linker PT_GNU_EH_FRAME support)
 gcc_cv_ld_eh_frame_hdr=no
 if test $in_tree_ld = yes ; then
-  if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 12 -o "$gcc_cv_gld_major_version" -gt 2 \
-     && test $in_tree_ld_is_elf = yes; then
+  if gcc_fn_gld_elf_min_version 2 12; then
     gcc_cv_ld_eh_frame_hdr=yes
   fi
 elif test x$gcc_cv_ld != x; then
@@ -6110,9 +6124,7 @@ AC_MSG_RESULT($gcc_cv_ld_eh_frame_hdr)
 AC_MSG_CHECKING(linker position independent executable support)
 gcc_cv_ld_pie=no
 if test $in_tree_ld = yes ; then
-  gcc_gld_pie_min_version=15
-  if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge "$gcc_gld_pie_min_version" -o "$gcc_cv_gld_major_version" -gt 2 \
-     && test $in_tree_ld_is_elf = yes; then
+  if gcc_fn_gld_elf_min_version 2 15; then
     gcc_cv_ld_pie=yes
   fi
 elif test x$gcc_cv_ld != x; then
@@ -6138,7 +6150,7 @@ AC_MSG_CHECKING(linker PIE support with 
 gcc_cv_ld_pie_copyreloc=no
 if test $gcc_cv_ld_pie = yes ; then
   if test $in_tree_ld = yes ; then
-    if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 25 -o "$gcc_cv_gld_major_version" -gt 2; then
+    if gcc_fn_gld_min_version 2 25; then
       gcc_cv_ld_pie_copyreloc=yes
     fi
   elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x ; then
@@ -6185,8 +6197,7 @@ AC_MSG_RESULT($gcc_cv_ld_pie_copyreloc)
 AC_MSG_CHECKING(linker EH-compatible garbage collection of sections)
 gcc_cv_ld_eh_gc_sections=no
 if test $in_tree_ld = yes ; then
-  if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 17 -o "$gcc_cv_gld_major_version" -gt 2 \
-     && test $in_tree_ld_is_elf = yes; then
+  if gcc_fn_gld_elf_min_version 2 17; then
     gcc_cv_ld_eh_gc_sections=yes
   fi
 elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x -a x"$gcc_cv_objdump" != x ; then
@@ -6266,8 +6277,9 @@ AC_MSG_RESULT($gcc_cv_ld_eh_gc_sections)
 AC_MSG_CHECKING(linker EH garbage collection of sections bug)
 gcc_cv_ld_eh_gc_sections_bug=no
 if test $in_tree_ld = yes ; then
-  if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -lt 19 -o "$gcc_cv_gld_major_version" -lt 2 \
-     && test $in_tree_ld_is_elf = yes; then
+  if gcc_fn_gld_elf_min_version 2 19; then
+    :
+  else
     gcc_cv_ld_eh_gc_sections_bug=yes
   fi
 elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x -a x"$gcc_cv_objdump" != x -a x$gcc_cv_as_comdat_group = xyes; then
@@ -6530,7 +6542,7 @@ case $target_os in
     AC_MSG_CHECKING(PE linker --disable-dynamicbase support)
     gcc_cv_ld_disable_dynamicbase=no
     if test $in_tree_ld = yes; then
-      if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 36 -o "$gcc_cv_gld_major_version" -gt 2; then \
+      if gcc_fn_gld_min_version 2 36; then
         gcc_cv_ld_disable_dynamicbase=yes
       fi
     else
@@ -6557,11 +6569,10 @@ gcc_cv_ld_as_needed_option='--as-needed'
 gcc_cv_ld_no_as_needed_option='--no-as-needed'
 gcc_cv_ld_use_as_needed_ldscript=no
 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
+  if gcc_fn_gld_elf_min_version 2 16; then
     gcc_cv_ld_as_needed=yes
     gcc_cv_ld_use_as_needed_ldscript=yes
-    if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 28; then
+    if gcc_fn_gld_min_version 2 28; then
       gcc_cv_ld_as_needed_option='--push-state --as-needed'
       gcc_cv_ld_no_as_needed_option='--pop-state'
     fi
@@ -6636,9 +6647,7 @@ case "$target" in
     if test x"$ld_is_gold" = xyes; then
       gcc_cv_ld_ppc_attr=yes
     elif test $in_tree_ld = yes ; then
-      if test "$gcc_cv_gld_major_version" -eq 2 \
-		-a "$gcc_cv_gld_minor_version" -ge 28 \
-		-o "$gcc_cv_gld_major_version" -gt 2; then
+      if gcc_fn_gld_min_version 2 28; then
         gcc_cv_ld_ppc_attr=yes
       fi
     elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x ; then
@@ -6687,7 +6696,7 @@ case "$target:$tm_file" in
     if test x"$ld_is_gold" = xyes; then
       gcc_cv_ld_no_dot_syms=yes
     elif 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; then
+      if gcc_fn_gld_min_version 2 16; then
         gcc_cv_ld_no_dot_syms=yes
       fi
     elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x ; then
@@ -6726,7 +6735,7 @@ EOF
     if test x"$ld_is_gold" = xyes; then
       gcc_cv_ld_large_toc=yes
     elif test $in_tree_ld = yes ; then
-      if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 21 -o "$gcc_cv_gld_major_version" -gt 2; then
+      if gcc_fn_gld_min_version 2 21; then
         gcc_cv_ld_large_toc=yes
       fi
     elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x ; then
@@ -6812,10 +6821,7 @@ AC_CACHE_CHECK(linker --build-id support
   gcc_cv_ld_buildid,
   [gcc_cv_ld_buildid=no
   if test $in_tree_ld = yes ; then
-    if test "$gcc_cv_gld_major_version" -eq 2 -a \
-       "$gcc_cv_gld_minor_version" -ge 18 -o \
-       "$gcc_cv_gld_major_version" -gt 2 \
-       && test $in_tree_ld_is_elf = yes; then
+    if gcc_fn_gld_elf_min_version 2 18; then
       gcc_cv_ld_buildid=yes
     fi
   elif test x$gcc_cv_ld != x; then
@@ -6847,7 +6853,7 @@ AC_CACHE_CHECK(linker --sysroot support,
   gcc_cv_ld_sysroot,
   [gcc_cv_ld_sysroot=no
   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 ; then
+      if gcc_fn_gld_min_version 2 16; then
         gcc_cv_ld_sysroot=yes
       fi
   elif test x$gcc_cv_ld != x; then 
@@ -7764,7 +7770,7 @@ ld_bndplt_support=no
 AC_MSG_CHECKING(linker -z bndplt option)
 if test x"$ld_is_gold" = xno; then
   if test $in_tree_ld = yes ; then
-    if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 25 -o "$gcc_cv_gld_major_version" -gt 2; then
+    if gcc_fn_gld_min_version 2 25; then
       ld_bndplt_support=yes
     fi
   elif test x$gcc_cv_ld != x; then
@@ -7785,7 +7791,7 @@ ld_pushpopstate_support=no
 AC_MSG_CHECKING(linker --push-state/--pop-state options)
 if test x"$ld_is_gold" = xno; then
   if test $in_tree_ld = yes ; then
-    if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 25 -o "$gcc_cv_gld_major_version" -gt 2; then
+    if gcc_fn_gld_min_version 2 25; then
       ld_pushpopstate_support=yes
     fi
   elif test x$gcc_cv_ld != x; then
@@ -7934,7 +7940,7 @@ AC_MSG_CHECKING(linker -z now option)
 if test x"$ld_is_gold" = xyes; then
   ld_now_support=yes
 elif test $in_tree_ld = yes ; then
-  if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 14 -o "$gcc_cv_gld_major_version" -gt 2; then
+  if gcc_fn_gld_min_version 2 14; then
     ld_now_support=yes
   fi
 elif test x$gcc_cv_ld != x; then
@@ -7954,7 +7960,7 @@ AC_MSG_CHECKING(linker -z relro option)
 if test x"$ld_is_gold" = xyes; then
   ld_relro_support=yes
 elif test $in_tree_ld = yes ; then
-  if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 15 -o "$gcc_cv_gld_major_version" -gt 2; then
+  if gcc_fn_gld_min_version 2 15; then
     ld_relro_support=yes
   fi
 elif test x$gcc_cv_ld != x; then

Reply via email to