Subject: glibc MIPS patch to check for binutils version...

From: "Steven J. Hill" <[email-masked]>
Date: Fri, 11 May 2001 07:06:54 -0500

Greetings.

Please find attached a patch to GLIBC that is compatible with
the new version of binutils (HJLu's and CVS at least). I have
also added some cruft in 'configure.in' that will produce
warning messages if a user attempt to use old binutils. Comments
are welcome. I have gone out on a limb and also included a
Changelog entry in case this patch actually gets accepted :).
This patch will apply against the CVS version of GLIBC. Please
regenerate 'configure'. Thanks.

-Steve

***** Changelog entry *****
        * sysdeps/mips/rtld-ldscript.in: removed unneeded binary
        output format directive
        * configure.in: added in checking for obsolete binutils
        for MIPS targets which produces a warning message if
        user attempts to use older tools.
***************************

******* START PATCH *******
diff -urN glibc-2.2.3/configure.in glibc-2.2.3-patched/configure.in
--- glibc-2.2.3/configure.in    Wed Apr 25 16:50:58 2001
+++ glibc-2.2.3-patched/configure.in    Thu May 10 23:09:24 2001
@@ -590,6 +590,29 @@
 AC_SUBST(cross_compiling)
 AC_PROG_CPP
 LIBC_PROG_BINUTILS
+
+# For MIPS targets, we need to check that the proper version of
+# binutils is being used and warn that old binary compatability
+# may be broken.  --sjhill
+case "$host_alias" in
+mips*-linux)
+  echo $ac_n "checking versions of GNU assembler and linker... $ac_c" 1>&6
+  ac_prog_version=`$AS -o conftest -v </dev/null 2>&1 | sed -n 's/^.*version \(
[0-9.]*\).*$/\1/p'`
+  case $ac_prog_version in
+    '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+    2.11.90.0.[5-9]*|2.11.[2-9]|2.1[2-9]*)
+       ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+    *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+  esac
+  echo "$ac_t""$ac_prog_version" 1>&6
+  if test $ac_verc_fail = yes; then
+    echo "configure: warning:
+*** These are older versions of the GNU linker and assembler
+*** for MIPS targets. You should seriously consider upgrading
+*** your tools or risk producing incompatible binaries." 1>&2
+  fi
+esac
+
 AC_CHECK_TOOL(MIG, mig)

 # Accept binutils 2.10.1 or newer (and also any ia64 2.9 version)
diff -urN glibc-2.2.3/sysdeps/mips/rtld-ldscript.in glibc-2.2.3-patched/sysdeps/
mips/rtld-ldscript.in
--- glibc-2.2.3/sysdeps/mips/rtld-ldscript.in   Sat Jul 12 18:23:14 1997
+++ glibc-2.2.3-patched/sysdeps/mips/rtld-ldscript.in   Fri May 11 06:34:52 2001
@@ -1,4 +1,3 @@
-OUTPUT_FORMAT("@@rtld-oformat@@")
 OUTPUT_ARCH(@@rtld-arch@@)
 ENTRY(@@rtld-entry@@)
 SECTIONS
******* END PATCH *******

-- 
 Steven J. Hill - Embedded SW Engineer
 Public Key: 'http://www.cotw.com/pubkey.txt'
 FPR1: E124 6E1C AF8E 7802 A815
 FPR2: 7D72 829C 3386 4C4A E17D

---

From: Andreas Jaeger <[email-masked]>
Date: 11 May 2001 15:07:57 +0200

>         * sysdeps/mips/rtld-ldscript.in: removed unneeded binary

Ok.

>         user attempts to use older tools.

Let's do this differently.  I'm appending a patch that does it more
the "glibc way".  I've committed everything to CVS including a patch
for the FAQ.  I hope I got the version numbers right.

Thanks,
Andreas

2001-05-11  Andreas Jaeger  <[email-masked]>

	* sysdeps/unix/sysv/linux/configure.in: Check binutils version on
	MIPS.

============================================================
Index: sysdeps/unix/sysv/linux/configure.in
--- sysdeps/unix/sysv/linux/configure.in	2001/03/16 07:35:59	1.37
+++ sysdeps/unix/sysv/linux/configure.in	2001/05/11 12:58:25
@@ -191,3 +191,14 @@
     AC_MSG_RESULT(ok)
   fi
 fi
+
+case "$machine" in
+  mips*)
+	AC_CHECK_PROG_VER(AS, $AS, --version,
+	  [GNU assembler.* \([0-9]*\.[0-9.]*\(-ia64-[0-9]*\)*\)],
+	  [2.11.90.0.[5-9]* | 2.11.90.[1-9]* | 2.11.9[1-9]* | 2.11.[1-9]* | 2.1[2-9]*| 2.[2-9]*], 
+	AC_MSG_WARN([*** Your binutils versions are too old.  
+*** We strongly advise to update binutils.  For details check 
+*** the FAQ and INSTALL documents.]))
+	;;
+esac
-- 
 Andreas Jaeger
  SuSE Labs [email-masked]
   private [email-masked]
    http://www.suse.de/~aj

---

From: "Steven J. Hill" <[email-masked]>
Date: Fri, 11 May 2001 09:18:15 -0500

> for the FAQ.  I hope I got the version numbers right.
Oh sure...my patch wasn't good enough :). I checked your addition to
the FAQ and it is correct. Thanks a lot Andreas. Cheers.

-Steve

---

From: "H . J . Lu" <[email-masked]>
Date: Fri, 11 May 2001 08:54:15 -0700

>         * sysdeps/mips/rtld-ldscript.in: removed unneeded binary

I don't believe those rtld-ldscript.in and rtld-parms are needed for
the new MIPS toolchain at all. They may cause more trouble than
without. Could you please tell me what breaks when you remove them?
There is a chance that the old binaries compiled against glibc 2.0.x
may run with the new glibc 2.2 without those linker scripts for the
IRIX ABI.

H.J.

---

From: "Maciej W. Rozycki" <[email-masked]>
Date: Fri, 11 May 2001 18:26:51 +0200 (MET DST)

> 	* sysdeps/unix/sysv/linux/configure.in: Check binutils version on

 Wouldn't it be cleaner if the check was placed in
sysdeps/unix/sysv/linux/mips/configure.in instead, like it's done for
Alpha?

-- 
+  Maciej W. Rozycki, Technical University of Gdansk, Poland   +
+--------------------------------------------------------------+
+        e-mail: [email-masked], PGP key available        +

---

From: Andreas Jaeger <[email-masked]>
Date: 11 May 2001 18:44:44 +0200

> sysdeps/unix/sysv/linux/mips/configure.in instead, like it's done for

That would be better - I'll move it later,

Thanks,
Andreas