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