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
