[1/2] Require binutils 2.27 or later to build glibc

Message ID 20200902153726.237493-1-tuliom@linux.ibm.com
State Superseded
Delegated to: Joseph Myers
Headers
Series [1/2] Require binutils 2.27 or later to build glibc |

Commit Message

Tulio Magno Quites Machado Filho Sept. 2, 2020, 3:37 p.m. UTC
  I believe this is a cautious update considering the last update on
binutils requirements was in 2017.  However, I did not find any other
code that could be removed if we started requiring binutils 2.30.
Notice the ARC port requires binutils 2.32.

---8<---

Start requiring binutils >= 2.27 instead of 2.25.
A test for binutils 2.26 is removed from powerpc64le.

Tested on powerpc64le and x86_64.
---
 INSTALL                                   |  6 +--
 NEWS                                      |  3 ++
 configure                                 |  6 +--
 configure.ac                              |  6 +--
 manual/install.texi                       |  8 +--
 sysdeps/powerpc/powerpc64/le/configure    | 64 -----------------------
 sysdeps/powerpc/powerpc64/le/configure.ac |  7 ---
 7 files changed, 12 insertions(+), 88 deletions(-)
  

Comments

Joseph Myers Sept. 2, 2020, 5:09 p.m. UTC | #1
On Wed, 2 Sep 2020, Tulio Magno Quites Machado Filho via Libc-alpha wrote:

>       You must use GNU 'binutils' (as and ld) to build the GNU C Library.
>       No other assembler or linker has the necessary functionality at the
>       moment.  As of release time, GNU 'binutils' 2.32 is the newest
>       verified to work to build the GNU C Library.

This does not appear to be a regeneration corresponding to the changes in 
install.texi.

> diff --git a/NEWS b/NEWS
> index 06e43e0453..60c4fc73ce 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -10,6 +10,9 @@ Version 2.33
>  Major new features:
>  
>  
> +* The minimum GNU Binutils version that can be used to build this version of
> +  the GNU C Library is Binutils 2.27.

This belongs under "Changes to build and runtime requirements:", not 
"Major new features:".

>  You must use GNU @code{binutils} (as and ld) to build @theglibc{}.
>  No other assembler or linker has the necessary functionality at the
> -moment. As of release time, GNU @code{binutils} 2.32 is the newest
> +moment. As of release time, GNU @code{binutils} 2.35 is the newest
>  verified to work to build @theglibc{}.

Specficically, this install.texi change is not reflected in the INSTALL 
changes above.
  

Patch

diff --git a/INSTALL b/INSTALL
index 41f5d6b708..74aebff697 100644
--- a/INSTALL
+++ b/INSTALL
@@ -487,17 +487,13 @@  build the GNU C Library:
      Check the FAQ for any special compiler issues on particular
      platforms.
 
-   * GNU 'binutils' 2.25 or later
+   * GNU 'binutils' 2.27 or later
 
      You must use GNU 'binutils' (as and ld) to build the GNU C Library.
      No other assembler or linker has the necessary functionality at the
      moment.  As of release time, GNU 'binutils' 2.32 is the newest
      verified to work to build the GNU C Library.
 
-     For PowerPC 64-bits little-endian (powerpc64le), 'objcopy' is
-     required to support '--update-section'.  This option requires
-     binutils 2.26 or newer.
-
      ARC architecture needs 'binutils' 2.32 or higher for TLS related
      fixes.
 
diff --git a/NEWS b/NEWS
index 06e43e0453..60c4fc73ce 100644
--- a/NEWS
+++ b/NEWS
@@ -10,6 +10,9 @@  Version 2.33
 Major new features:
 
 
+* The minimum GNU Binutils version that can be used to build this version of
+  the GNU C Library is Binutils 2.27.
+
 * Support for the RISC-V ISA running on Linux has been expanded to run on
   32-bit hardware.  This is supported for the following ISA and ABI pairs:
 
diff --git a/configure b/configure
index 4795e721e5..7b01e72e0d 100755
--- a/configure
+++ b/configure
@@ -4514,7 +4514,7 @@  $as_echo "$libc_cv_prog_ld_gnu" >&6; }
 gnu_ld=$libc_cv_prog_ld_gnu
 
 
-# Accept binutils 2.25 or newer.
+# Accept binutils 2.27 or newer.
 for ac_prog in $AS
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -4566,7 +4566,7 @@  $as_echo_n "checking version of $AS... " >&6; }
   ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
   case $ac_prog_version in
     '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-    2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*)
+    2.1[0-9][0-9]*|2.2[7-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*)
        ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
     *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
 
@@ -4696,7 +4696,7 @@  $as_echo_n "checking version of $LD... " >&6; }
   ac_prog_version=`$LD --version 2>&1 | sed -n 's/^.*GNU ld.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
   case $ac_prog_version in
     '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-    2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*)
+    2.1[0-9][0-9]*|2.2[7-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*)
        ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
     *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
 
diff --git a/configure.ac b/configure.ac
index 93e68fb696..6bc98e9ab1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -958,10 +958,10 @@  AC_PROG_LN_S
 
 LIBC_PROG_BINUTILS
 
-# Accept binutils 2.25 or newer.
+# Accept binutils 2.27 or newer.
 AC_CHECK_PROG_VER(AS, $AS, --version,
 		  [GNU assembler.* \([0-9]*\.[0-9.]*\)],
-		  [2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*],
+		  [2.1[0-9][0-9]*|2.2[7-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*],
 		  AS=: critic_missing="$critic_missing as")
 
 if test -n "`$LD --version | sed -n 's/^GNU \(gold\).*$/\1/p'`"; then
@@ -973,7 +973,7 @@  if test -n "`$LD --version | sed -n 's/^GNU \(gold\).*$/\1/p'`"; then
 else
   AC_CHECK_PROG_VER(LD, $LD, --version,
 		    [GNU ld.* \([0-9][0-9]*\.[0-9.]*\)],
-		    [2.1[0-9][0-9]*|2.2[5-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*],
+		    [2.1[0-9][0-9]*|2.2[7-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*],
 		    LD=: critic_missing="$critic_missing GNU ld")
 fi
 
diff --git a/manual/install.texi b/manual/install.texi
index 735e99bb03..5131422727 100644
--- a/manual/install.texi
+++ b/manual/install.texi
@@ -528,17 +528,13 @@  You can use whatever compiler you like to compile programs that use
 Check the FAQ for any special compiler issues on particular platforms.
 
 @item
-GNU @code{binutils} 2.25 or later
+GNU @code{binutils} 2.27 or later
 
 You must use GNU @code{binutils} (as and ld) to build @theglibc{}.
 No other assembler or linker has the necessary functionality at the
-moment. As of release time, GNU @code{binutils} 2.32 is the newest
+moment. As of release time, GNU @code{binutils} 2.35 is the newest
 verified to work to build @theglibc{}.
 
-For PowerPC 64-bits little-endian (powerpc64le), @command{objcopy} is required
-to support @option{--update-section}.  This option requires binutils 2.26 or
-newer.
-
 ARC architecture needs @code{binutils} 2.32 or higher for TLS related fixes.
 
 @item
diff --git a/sysdeps/powerpc/powerpc64/le/configure b/sysdeps/powerpc/powerpc64/le/configure
index 98a4889945..cd48cd9661 100644
--- a/sysdeps/powerpc/powerpc64/le/configure
+++ b/sysdeps/powerpc/powerpc64/le/configure
@@ -117,68 +117,4 @@  if test "$libc_cv_compiler_powerpc64le_ldbl128_mabi" == "no"; then :
   critic_missing="$critic_missing The compiler must support -mabi=ieeelongdouble and -mlongdouble simultaneously."
 fi
 
-for ac_prog in $OBJCOPY
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OBJCOPY+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$OBJCOPY"; then
-  ac_cv_prog_OBJCOPY="$OBJCOPY" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    for ac_exec_ext in '' $ac_executable_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OBJCOPY="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-OBJCOPY=$ac_cv_prog_OBJCOPY
-if test -n "$OBJCOPY"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJCOPY" >&5
-$as_echo "$OBJCOPY" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$OBJCOPY" && break
-done
-
-if test -z "$OBJCOPY"; then
-  ac_verc_fail=yes
-else
-  # Found it, now check the version.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of $OBJCOPY" >&5
-$as_echo_n "checking version of $OBJCOPY... " >&6; }
-  ac_prog_version=`$OBJCOPY --version 2>&1 | sed -n 's/^.*GNU objcopy.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
-  case $ac_prog_version in
-    '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-    2.1[0-9][0-9]*|2.2[6-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*)
-       ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-    *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-
-  esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
-$as_echo "$ac_prog_version" >&6; }
-fi
-if test $ac_verc_fail = yes; then
-  AS=: critic_missing="$critic_missing objcopy >= 2.26 is required on powerpc64le"
-fi
-
-
 test -n "$critic_missing" && as_fn_error $? "*** $critic_missing" "$LINENO" 5
diff --git a/sysdeps/powerpc/powerpc64/le/configure.ac b/sysdeps/powerpc/powerpc64/le/configure.ac
index 769c06709e..b616bf95e3 100644
--- a/sysdeps/powerpc/powerpc64/le/configure.ac
+++ b/sysdeps/powerpc/powerpc64/le/configure.ac
@@ -66,11 +66,4 @@  CFLAGS="$save_CFLAGS"])
 AS_IF([test "$libc_cv_compiler_powerpc64le_ldbl128_mabi" == "no"],
       [critic_missing="$critic_missing The compiler must support -mabi=ieeelongdouble and -mlongdouble simultaneously."])
 
-dnl objcopy (binutils) 2.26 or newer required to support the --update-section
-dnl feature for fixing up .gnu.attribute section with IEEE ldbl.
-AC_CHECK_PROG_VER(OBJCOPY, $OBJCOPY, --version,
-		  [GNU objcopy.* \([0-9]*\.[0-9.]*\)],
-		  [2.1[0-9][0-9]*|2.2[6-9]*|2.[3-9][0-9]*|[3-9].*|[1-9][0-9]*],
-		  AS=: critic_missing="$critic_missing objcopy >= 2.26 is required on powerpc64le")
-
 test -n "$critic_missing" && AC_MSG_ERROR([*** $critic_missing])