https://gcc.gnu.org/g:21ed8a7be17db49cbe66d5f59c476777c3fa8710

commit r17-2089-g21ed8a7be17db49cbe66d5f59c476777c3fa8710
Author: Rainer Orth <[email protected]>
Date:   Thu Jul 2 11:05:10 2026 +0200

    build: Simplify in-tree-gld version checks
    
    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.
    
    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.

Diff:
---
 gcc/configure    | 90 ++++++++++++++++++++++++++++++--------------------------
 gcc/configure.ac | 90 ++++++++++++++++++++++++++++++--------------------------
 2 files changed, 96 insertions(+), 84 deletions(-)

diff --git a/gcc/configure b/gcc/configure
index f9c09bf5f355..c71856868cf0 100755
--- 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
@@ -30908,8 +30926,7 @@ $as_echo_n "checking assembler and linker for explicit 
JALR relocation... " >&6;
     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
@@ -30948,9 +30965,7 @@ if ${gcc_cv_ld_mips_personality_relaxation+:} false; 
then :
 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 \
@@ -32614,8 +32629,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
@@ -32645,9 +32659,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
@@ -32676,7 +32688,7 @@ $as_echo_n "checking linker PIE support with copy 
reloc... " >&6; }
 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
@@ -32727,8 +32739,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
@@ -32810,8 +32821,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
@@ -33127,7 +33139,7 @@ $as_echo "$gcc_cv_ld_broken_pe_dwarf5" >&6; }
 $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
@@ -33159,11 +33171,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
@@ -33265,9 +33276,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
@@ -33323,7 +33332,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
@@ -33369,7 +33378,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
@@ -33478,10 +33487,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
@@ -33524,7 +33530,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
@@ -34997,7 +35003,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
@@ -35021,7 +35027,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
@@ -35243,7 +35249,7 @@ $as_echo_n "checking linker -z now option... " >&6; }
 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
@@ -35267,7 +35273,7 @@ $as_echo_n "checking linker -z relro option... " >&6; }
 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
index 4654826410e1..58b97f4e5252 100644
--- 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
@@ -5336,8 +5354,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
@@ -5372,9 +5389,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 \
@@ -6066,8 +6081,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
@@ -6094,9 +6108,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
@@ -6122,7 +6134,7 @@ AC_MSG_CHECKING(linker PIE support with copy reloc)
 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
@@ -6169,8 +6181,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
@@ -6250,8 +6261,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
@@ -6514,7 +6526,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
@@ -6541,11 +6553,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
@@ -6620,9 +6631,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
@@ -6671,7 +6680,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
@@ -6710,7 +6719,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
@@ -6796,10 +6805,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
@@ -6831,7 +6837,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 
@@ -7748,7 +7754,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
@@ -7769,7 +7775,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
@@ -7918,7 +7924,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
@@ -7938,7 +7944,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