summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog51
-rw-r--r--aclocal.m496
-rwxr-xr-xconfigure539
-rw-r--r--configure.in117
-rw-r--r--intl/explodename.c13
-rw-r--r--libio/stdio.h6
-rw-r--r--posix/unistd.h4
-rw-r--r--resolv/res_comp.c3
-rw-r--r--stdlib/isomac.c6
-rw-r--r--sysdeps/i386/bits/string.h8
-rw-r--r--sysdeps/i386/i686/strtok.S240
-rw-r--r--sysdeps/i386/i686/strtok_r.S4
-rw-r--r--sysdeps/unix/sysv/linux/getcwd.c59
-rw-r--r--sysdeps/unix/sysv/linux/i386/chown.c12
-rw-r--r--sysdeps/unix/sysv/linux/i386/i686/sysdep.h71
-rw-r--r--sysdeps/unix/sysv/linux/i386/sysdep.h4
16 files changed, 802 insertions, 431 deletions
diff --git a/ChangeLog b/ChangeLog
index f3e03d5aae..9eec8e852f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,54 @@
+1998-04-02  Ulrich Drepper  <drepper@cygnus.com>
+
+	* stdlib/isomac.c: Use -isystem instead of -I for system include
+	dir.
+
+1998-03-30 08:05  H.J. Lu  <hjl@gnu.org>
+
+	* resolv/res_comp.c (underscorechar): New.
+	(middlechar): Allow '_'.
+
+1998-04-02  Ulrich Drepper  <drepper@cygnus.com>
+
+	* intl/explodename.c (stdlib.h): Include that file only if
+	STDC_HEADERS or _LIBC.
+	(string.h): Include that file only if HAVE_STRING_H or _LIBC.
+	Patch by Philippe De Muyter <phdm@macqel.be>.
+
+1998-04-01 21:08  Zack Weinberg  <zack@rabi.phys.columbia.edu>
+
+	* aclocal.m4 (AC_PROG_CC_LOCAL): Remove superfluous tests.
+	(AC_PROG_CHECK_VER): New macro.
+	* configure.in: Use AC_PROG_CHECK_VER to check versions of
+	gcc, gmake, msgfmt, makeinfo.  Remove superfluous tests.
+
+1998-04-02 15:13  Ulrich Drepper  <drepper@cygnus.com>
+
+	* sysdeps/unix/sysv/linux/i386/i686/sysdep.h: New file.
+	* sysdeps/i386/i686/strtok.S: New file
+	* sysdeps/i386/i686/strtok_r.S: New file
+
+1998-04-02  Mark Kettenis  <kettenis@phys.uva.nl>
+
+	* posix/unistd.h: [__USE_FILE_OFFSET64] (lseek): Change return
+	type to __off64_t.
+	* libio/stdio.h [__USE_FILE_OFFSET64] (fseeko): Declare offset
+	parameter as __off64_t instead of __off_t.
+	(ftello): Make alias for ftello64 instead of ftello.  Change
+	return type to __off64_t.
+
+1998-04-02  Ulrich Drepper  <drepper@cygnus.com>
+
+	* sysdeps/i386/bits/string.h: Fix various typos.
+	Patch by Horst von Brand <vonbrand@sleipnir.valparaiso.cl>.
+
+	* sysdeps/unix/sysv/linux/getcwd.c: Use getcwd syscall in Linux 2.1.92.
+
+1998-04-02  Ulrich Drepper  <drepper@cygnus.com>
+
+	* sysdeps/unix/sysv/linux/i386/chown.c: Handle old kernels without
+	lchown syscall correctly.  [PR libc/541].
+
 1998-04-02 11:45  Ulrich Drepper  <drepper@cygnus.com>
 
 	* localedata/Makefile: Correct testsuite rules.
diff --git a/aclocal.m4 b/aclocal.m4
index 2842963e56..1bb0b4a92c 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -32,51 +32,79 @@ fi
 AC_MSG_RESULT($ac_cv_check_symbol_$1)])dnl
 dnl
 
+dnl Locate a program and check that its version is acceptable.
+dnl AC_PROG_CHECK_VER(var, namelist, version-switch,
+dnl 		      [version-extract-regexp], version-glob, fatal)
+AC_DEFUN(AC_CHECK_PROG_VER,
+[# Prepare to iterate over the program-name list.
+set dummy $2; shift
+AC_MSG_CHECKING([for [$]1])
+AC_CACHE_VAL(ac_cv_prog_$1, [dnl
+if test -n "[$]$1"; then
+  ac_cv_prog_$1="[$]$1" # Let the user override the test.
+else
+  IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  for ac_word; do
+    for ac_dir in $PATH; do
+      test -z "$ac_dir" && ac_dir=.
+      if test -f $ac_dir/$ac_word; then
+        ac_cv_prog_$1="$ac_word"
+        break
+      fi
+    done
+    test -n "$ac_cv_prog_$1" && break
+  done
+  IFS="$ac_save_ifs"
+fi])dnl
+if test -z "$ac_cv_prog_$1"; then
+  AC_MSG_RESULT(no)
+  $1=:
+  ac_verc_fail=t; ifelse([$6],,,[ac_verc_fatal=$6])
+else
+# Found it, now check the version.
+ac_word=$ac_cv_prog_$1
+dnl Do this by hand to avoid "(cached) (cached)".
+  if test "[$]{ac_cv_prog_$1_ver+set}" != set; then
+changequote(<<,>>)dnl
+    ac_cv_prog_$1_ver=`$ac_word $3 2>&1 ifelse(<<$4>>,,,<<| sed -n 's/^.*$4.*$/\1/p'>>)`
+  fi
+  if test -n "$ac_cv_prog_$1_ver"; then
+  case $ac_cv_prog_$1_ver in
+    <<$5>>) ac_vers_ok=", ok";  $1=$ac_cv_prog_$1;;
+changequote([,])dnl
+         *) ac_vers_ok=", bad"; $1=:
+	    ac_verc_fail=t; ifelse([$6],,,[ac_verc_fatal=$6]);;
+  esac
+  else
+    ac_vers_ok="v. ?.??, bad"; $1=:
+    ac_verc_fail=t; ifelse([$6],,,[ac_verc_fatal=$6])
+  fi
+AC_MSG_RESULT($ac_word $ac_cv_prog_$1_ver$ac_vers_ok)
+fi
+AC_SUBST($1)dnl
+])
+
 dnl These modifications are to allow for an empty cross compiler tree.
 dnl In the situation that cross-linking is impossible, the variable
 dnl `cross_linkable' will be substituted with "yes".
+dnl The vercheck macros are expected to have been called already.
 AC_DEFUN(AC_PROG_CC_LOCAL,
 [AC_BEFORE([$0], [AC_PROG_CPP])dnl
-AC_CHECK_PROG(CC, gcc, gcc)
-if test -z "$CC"; then
-  AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc)
-  test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
-fi
 
 AC_PROG_CC_WORKS_LOCAL
 AC_PROG_CC_GNU
-
-dnl The following differs from the AC_PROG_CC macro in autoconf.  Since
-dnl we require a recent version of gcc to be used we do not need to go
-dnl into lengths and test for bugs in old versions.  It must be gcc 2.7
-dnl or above.
-if test $ac_cv_prog_gcc = yes; then
-  GCC=yes
-
-dnl Check the version
-  cat > conftest.c <<EOF
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
-  yes;
-#endif
-EOF
-  if AC_TRY_COMMAND(${CC-cc} -E conftest.c) | egrep yes >/dev/null 2>&1; then
-    if test -z "$CFLAGS"; then
-      CFLAGS="-g -O2"
-    fi
-  else
-    AC_MSG_ERROR([We require GNU CC version 2.7 or newer])
-  fi
-else
+if test $ac_cv_prog_gcc != yes; then
   AC_MSG_ERROR([GNU libc must be compiled using GNU CC])
 fi
 ])
 
 AC_DEFUN(AC_PROG_CC_WORKS_LOCAL,
 [AC_MSG_CHECKING([whether the C compiler ($CC $CFLAGS $LDFLAGS) works])
-AC_LANG_SAVE
+AC_CACHE_VAL(ac_cv_prog_cc_works,
+[AC_LANG_SAVE
 AC_LANG_C
 AC_TRY_COMPILER([main(){return(0);}], ac_cv_prog_cc_works, ac_cv_prog_cc_cross)
-AC_LANG_RESTORE
+AC_LANG_RESTORE])
 AC_MSG_RESULT($ac_cv_prog_cc_works)
 if test $ac_cv_prog_cc_works = no; then
  cross_linkable=no
@@ -85,8 +113,9 @@ dnl AC_MSG_ERROR([installation or configuration problem: C compiler cannot creat
 else
  cross_linkable=yes
 fi
-AC_MSG_CHECKING([whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler])
-AC_MSG_RESULT($ac_cv_prog_cc_cross)
+AC_CACHE_CHECK(
+[whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler],
+ac_cv_prog_cc_cross, [:])
 AC_SUBST(cross_linkable)
 cross_compiling=$ac_cv_prog_cc_cross
 ])
@@ -105,7 +134,7 @@ AC_DEFUN(LIBC_PROG_BINUTILS,
 if test -n "$path_binutils"; then
     # Make absolute; ensure a single trailing slash.
     path_binutils=`(cd $path_binutils; pwd) | sed 's%/*$%/%'`
-    CC="$CC -B$with_binutils"
+    CC="$CC -B$path_binutils"
 fi
 AS=`$CC -print-file-name=as`
 LD=`$CC -print-file-name=ld`
@@ -118,4 +147,5 @@ gnu_as=$libc_cv_prog_as_gnu
 
 AC_CACHE_CHECK(whether $LD is GNU ld, libc_cv_prog_ld_gnu,
 [LIBC_PROG_FOO_GNU($LD, libc_cv_prog_ld_gnu=yes, libc_cv_prog_ld_gnu=no)])
-gnu_ld=$libc_cv_prog_ld_gnu])
+gnu_ld=$libc_cv_prog_ld_gnu
+])
diff --git a/configure b/configure
index 7e886b913b..76bd9e6631 100755
--- a/configure
+++ b/configure
@@ -9,6 +9,8 @@
 
 
 
+
+
 # Guess values for system-dependent variables and create Makefiles.
 # Generated automatically using autoconf version 2.12 
 # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
@@ -561,6 +563,14 @@ else
   ac_n= ac_c='\c' ac_t=
 fi
 
+    if test -r /vmunix; then
+      kernel_id=`strings /vmunix | grep UNIX`
+    elif test -r /dynix; then
+      kernel_id=`strings /dynix | grep DYNIX`
+    else
+      kernel_id=
+    fi
+
 
 
 
@@ -773,7 +783,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
 fi
 
 echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:777: checking host system type" >&5
+echo "configure:787: checking host system type" >&5
 
 host_alias=$host
 case "$host_alias" in
@@ -896,7 +906,7 @@ fi
 # This can take a while to compute.
 sysdep_dir=$srcdir/sysdeps
 echo $ac_n "checking sysdep dirs""... $ac_c" 1>&6
-echo "configure:900: checking sysdep dirs" >&5
+echo "configure:910: checking sysdep dirs" >&5
 # Make sco3.2v4 become sco3.2.4 and sunos4.1.1_U1 become sunos4.1.1.U1.
 os="`echo $os | sed 's/\([0-9A-Z]\)[v_]\([0-9A-Z]\)/\1.\2/g'`"
 
@@ -1101,7 +1111,7 @@ echo "$ac_t""sysdeps/generic" 1>&6
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:1105: checking for a BSD compatible install" >&5
+echo "configure:1115: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1155,7 +1165,7 @@ if test "$INSTALL" = "${srcdir}/install-sh -c"; then
   INSTALL='\$(..)./install-sh -c'
 fi
 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:1159: checking whether ln -s works" >&5
+echo "configure:1169: checking whether ln -s works" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1175,172 +1185,214 @@ else
   echo "$ac_t""no" 1>&6
 fi
 
-for ac_prog in msgfmt gmsgfmt
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1184: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then
+
+# These programs are version sensitive.
+# Prepare to iterate over the program-name list.
+set dummy gcc cc; shift
+echo $ac_n "checking for $1""... $ac_c" 1>&6
+echo "configure:1194: checking for $1" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
-  if test -n "$MSGFMT"; then
-  ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test.
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
 else
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_MSGFMT="$ac_prog"
-      break
-    fi
+  IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  for ac_word; do
+    for ac_dir in $PATH; do
+      test -z "$ac_dir" && ac_dir=.
+      if test -f $ac_dir/$ac_word; then
+        ac_cv_prog_CC="$ac_word"
+        break
+      fi
+    done
+    test -n "$ac_cv_prog_CC" && break
   done
   IFS="$ac_save_ifs"
 fi
 fi
-MSGFMT="$ac_cv_prog_MSGFMT"
-if test -n "$MSGFMT"; then
-  echo "$ac_t""$MSGFMT" 1>&6
-else
+if test -z "$ac_cv_prog_CC"; then
   echo "$ac_t""no" 1>&6
-fi
-
-test -n "$MSGFMT" && break
-done
-test -n "$MSGFMT" || MSGFMT=":"
-
-if test "$MSGFMT" != ":"; then
-  if $MSGFMT --version 2>&1 | grep 'GNU gettext.*0\.[1-9][0-9]' >/dev/null 2>&1
-  then : # msgfmt from gettext 0.10 or greater, works.
+  CC=:
+  ac_verc_fail=t; ac_verc_fatal=t
+else
+# Found it, now check the version.
+ac_word=$ac_cv_prog_CC
+  if test "${ac_cv_prog_CC_ver+set}" != set; then
+    ac_cv_prog_CC_ver=`$ac_word -v 2>&1 | sed -n 's/^.*version \([egcs0-9.-]*\).*$/\1/p'`
+  fi
+  if test -n "$ac_cv_prog_CC_ver"; then
+  case $ac_cv_prog_CC_ver in
+    egcs-2.91.*|egcs-2.90.2[789]|egcs-2.90.[3-9][0-9]|2.8.[1-9]*|2.9.[0-9]*) ac_vers_ok=", ok";  CC=$ac_cv_prog_CC;;
+         *) ac_vers_ok=", bad"; CC=:
+	    ac_verc_fail=t; ac_verc_fatal=t;;
+  esac
   else
-    echo "configure: warning: 
-*** (g)msgfmt is too old or wrong version (need gettext 0.10 or better)." 1>&2
-    MSGFMT=":"
+    ac_vers_ok="v. ?.??, bad"; CC=:
+    ac_verc_fail=t; ac_verc_fatal=t
   fi
+echo "$ac_t""$ac_word $ac_cv_prog_CC_ver$ac_vers_ok" 1>&6
 fi
 
-# Extract the first word of "makeinfo", so it can be a program name with args.
-set dummy makeinfo; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1226: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then
+# Prepare to iterate over the program-name list.
+set dummy make gmake; shift
+echo $ac_n "checking for $1""... $ac_c" 1>&6
+echo "configure:1241: checking for $1" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
-  if test -n "$MAKEINFO"; then
-  ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
+  if test -n "$MAKE"; then
+  ac_cv_prog_MAKE="$MAKE" # Let the user override the test.
 else
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_MAKEINFO="makeinfo"
-      break
-    fi
+  IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  for ac_word; do
+    for ac_dir in $PATH; do
+      test -z "$ac_dir" && ac_dir=.
+      if test -f $ac_dir/$ac_word; then
+        ac_cv_prog_MAKE="$ac_word"
+        break
+      fi
+    done
+    test -n "$ac_cv_prog_MAKE" && break
   done
   IFS="$ac_save_ifs"
 fi
 fi
-MAKEINFO="$ac_cv_prog_MAKEINFO"
-if test -n "$MAKEINFO"; then
-  echo "$ac_t""$MAKEINFO" 1>&6
-else
+if test -z "$ac_cv_prog_MAKE"; then
   echo "$ac_t""no" 1>&6
-fi
-
-if test "$MAKEINFO"; then
-  if $MAKEINFO --version | grep 'texinfo 3\.[1-9][1-9]' >/dev/null 2>&1
-  then : # Makeinfo 3.11 or greater, works.
+  MAKE=:
+  ac_verc_fail=t; ac_verc_fatal=t
+else
+# Found it, now check the version.
+ac_word=$ac_cv_prog_MAKE
+  if test "${ac_cv_prog_MAKE_ver+set}" != set; then
+    ac_cv_prog_MAKE_ver=`$ac_word --version 2>&1 | sed -n 's/^.*version \([0-9][0-9.]*\), by.*$/\1/p'`
+  fi
+  if test -n "$ac_cv_prog_MAKE_ver"; then
+  case $ac_cv_prog_MAKE_ver in
+    3.75 | 3.76.[2-9] | 3.7[789]* | 3.[89]*) ac_vers_ok=", ok";  MAKE=$ac_cv_prog_MAKE;;
+         *) ac_vers_ok=", bad"; MAKE=:
+	    ac_verc_fail=t; ac_verc_fatal=t;;
+  esac
   else
-    echo "configure: warning: 
-*** makeinfo is too old (need version 3.11 or better).
-*** You should install the needed version and re-configure since otherwise
-*** you won't get the info pages installed." 1>&2
-    MAKEINFO=
+    ac_vers_ok="v. ?.??, bad"; MAKE=:
+    ac_verc_fail=t; ac_verc_fatal=t
   fi
+echo "$ac_t""$ac_word $ac_cv_prog_MAKE_ver$ac_vers_ok" 1>&6
 fi
 
-# Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1266: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+
+# Prepare to iterate over the program-name list.
+set dummy msgfmt gmsgfmt; shift
+echo $ac_n "checking for $1""... $ac_c" 1>&6
+echo "configure:1289: checking for $1" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
+  if test -n "$MSGFMT"; then
+  ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test.
 else
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_CC="gcc"
-      break
-    fi
+  IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  for ac_word; do
+    for ac_dir in $PATH; do
+      test -z "$ac_dir" && ac_dir=.
+      if test -f $ac_dir/$ac_word; then
+        ac_cv_prog_MSGFMT="$ac_word"
+        break
+      fi
+    done
+    test -n "$ac_cv_prog_MSGFMT" && break
   done
   IFS="$ac_save_ifs"
 fi
 fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&6
-else
+if test -z "$ac_cv_prog_MSGFMT"; then
   echo "$ac_t""no" 1>&6
+  MSGFMT=:
+  ac_verc_fail=t; 
+else
+# Found it, now check the version.
+ac_word=$ac_cv_prog_MSGFMT
+  if test "${ac_cv_prog_MSGFMT_ver+set}" != set; then
+    ac_cv_prog_MSGFMT_ver=`$ac_word --version 2>&1 | sed -n 's/^.*GNU gettext.*\([0-9][0-9]*\.[0-9]*\).*$/\1/p'`
+  fi
+  if test -n "$ac_cv_prog_MSGFMT_ver"; then
+  case $ac_cv_prog_MSGFMT_ver in
+    0.[1-9][0-9] | [1-9].*) ac_vers_ok=", ok";  MSGFMT=$ac_cv_prog_MSGFMT;;
+         *) ac_vers_ok=", bad"; MSGFMT=:
+	    ac_verc_fail=t; ;;
+  esac
+  else
+    ac_vers_ok="v. ?.??, bad"; MSGFMT=:
+    ac_verc_fail=t; 
+  fi
+echo "$ac_t""$ac_word $ac_cv_prog_MSGFMT_ver$ac_vers_ok" 1>&6
 fi
 
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1295: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
+# Prepare to iterate over the program-name list.
+set dummy makeinfo; shift
+echo $ac_n "checking for $1""... $ac_c" 1>&6
+echo "configure:1336: checking for $1" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
+  if test -n "$MAKEINFO"; then
+  ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
 else
-  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  ac_prog_rejected=no
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
-        ac_prog_rejected=yes
-	continue
+  IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  for ac_word; do
+    for ac_dir in $PATH; do
+      test -z "$ac_dir" && ac_dir=.
+      if test -f $ac_dir/$ac_word; then
+        ac_cv_prog_MAKEINFO="$ac_word"
+        break
       fi
-      ac_cv_prog_CC="cc"
-      break
-    fi
+    done
+    test -n "$ac_cv_prog_MAKEINFO" && break
   done
   IFS="$ac_save_ifs"
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# -gt 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    set dummy "$ac_dir/$ac_word" "$@"
-    shift
-    ac_cv_prog_CC="$@"
-  fi
 fi
 fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&6
-else
+if test -z "$ac_cv_prog_MAKEINFO"; then
   echo "$ac_t""no" 1>&6
+  MAKEINFO=:
+  ac_verc_fail=t; 
+else
+# Found it, now check the version.
+ac_word=$ac_cv_prog_MAKEINFO
+  if test "${ac_cv_prog_MAKEINFO_ver+set}" != set; then
+    ac_cv_prog_MAKEINFO_ver=`$ac_word --version 2>&1 | sed -n 's/^.*GNU texinfo \([0-9][0-9.]*\).*$/\1/p'`
+  fi
+  if test -n "$ac_cv_prog_MAKEINFO_ver"; then
+  case $ac_cv_prog_MAKEINFO_ver in
+    3.1[1-9] | 3.[2-9][0-9]) ac_vers_ok=", ok";  MAKEINFO=$ac_cv_prog_MAKEINFO;;
+         *) ac_vers_ok=", bad"; MAKEINFO=:
+	    ac_verc_fail=t; ;;
+  esac
+  else
+    ac_vers_ok="v. ?.??, bad"; MAKEINFO=:
+    ac_verc_fail=t; 
+  fi
+echo "$ac_t""$ac_word $ac_cv_prog_MAKEINFO_ver$ac_vers_ok" 1>&6
 fi
 
-  test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
-fi
 
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1343: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+test -n "$ac_verc_fatal" && { echo "configure: error: 
+*** Some critical program is missing or too old.
+*** Check the INSTALL file for required versions." 1>&2; exit 1; }
+
+test -n "$ac_verc_fail" && echo "configure: warning: 
+*** An auxiliary program is missing or too old;
+*** some features will be disabled.
+*** Check the INSTALL file for required versions." 1>&2
 
+
+echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
+echo "configure:1392: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_cc_works'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  
 ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
 ac_cpp='$CPP $CPPFLAGS'
@@ -1349,11 +1401,11 @@ ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS
 cross_compiling=$ac_cv_prog_cc_cross
 
 cat > conftest.$ac_ext <<EOF
-#line 1353 "configure"
+#line 1405 "configure"
 #include "confdefs.h"
 main(){return(0);}
 EOF
-if { (eval echo configure:1357: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -1368,6 +1420,8 @@ else
 fi
 rm -fr conftest*
 
+fi
+
 echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
 if test $ac_cv_prog_cc_works = no; then
  cross_linkable=no
@@ -1376,13 +1430,19 @@ else
  cross_linkable=yes
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1380: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1434: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+if eval "test \"`echo '$''{'ac_cv_prog_cc_cross'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  :
+fi
+
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1386: checking whether we are using GNU C" >&5
+echo "configure:1446: checking whether we are using GNU C" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1391,7 +1451,7 @@ else
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1395: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1455: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -1399,28 +1459,12 @@ fi
 fi
 
 echo "$ac_t""$ac_cv_prog_gcc" 1>&6
-
-if test $ac_cv_prog_gcc = yes; then
-  GCC=yes
-
-  cat > conftest.c <<EOF
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
-  yes;
-#endif
-EOF
-  if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1412: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
-    if test -z "$CFLAGS"; then
-      CFLAGS="-g -O2"
-    fi
-  else
-    { echo "configure: error: We require GNU CC version 2.7 or newer" 1>&2; exit 1; }
-  fi
-else
+if test $ac_cv_prog_gcc != yes; then
   { echo "configure: error: GNU libc must be compiled using GNU CC" 1>&2; exit 1; }
 fi
 
 echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:1424: checking build system type" >&5
+echo "configure:1468: checking build system type" >&5
 
 build_alias=$build
 case "$build_alias" in
@@ -1443,7 +1487,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1447: checking for $ac_word" >&5
+echo "configure:1491: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_BUILD_CC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1474,7 +1518,7 @@ done
 fi
 
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1478: checking how to run the C preprocessor" >&5
+echo "configure:1522: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -1489,13 +1533,13 @@ else
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 1493 "configure"
+#line 1537 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1499: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1543: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   :
@@ -1506,13 +1550,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 1510 "configure"
+#line 1554 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1516: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1560: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   :
@@ -1538,14 +1582,14 @@ echo "$ac_t""$CPP" 1>&6
 if test -n "$path_binutils"; then
     # Make absolute; ensure a single trailing slash.
     path_binutils=`(cd $path_binutils; pwd) | sed 's%/*$%/%'`
-    CC="$CC -B$with_binutils"
+    CC="$CC -B$path_binutils"
 fi
 AS=`$CC -print-file-name=as`
 LD=`$CC -print-file-name=ld`
 
 # Determine whether we are using GNU binutils.
 echo $ac_n "checking whether $AS is GNU as""... $ac_c" 1>&6
-echo "configure:1549: checking whether $AS is GNU as" >&5
+echo "configure:1593: checking whether $AS is GNU as" >&5
 if eval "test \"`echo '$''{'libc_cv_prog_as_gnu'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1563,7 +1607,7 @@ rm -f a.out
 gnu_as=$libc_cv_prog_as_gnu
 
 echo $ac_n "checking whether $LD is GNU ld""... $ac_c" 1>&6
-echo "configure:1567: checking whether $LD is GNU ld" >&5
+echo "configure:1611: checking whether $LD is GNU ld" >&5
 if eval "test \"`echo '$''{'libc_cv_prog_ld_gnu'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1578,6 +1622,7 @@ fi
 
 echo "$ac_t""$libc_cv_prog_ld_gnu" 1>&6
 gnu_ld=$libc_cv_prog_ld_gnu
+
 if test $host != $build; then
   ac_tool_prefix=${host_alias}-
 else
@@ -1587,7 +1632,7 @@ fi
 # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ar; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1591: checking for $ac_word" >&5
+echo "configure:1636: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1618,7 +1663,7 @@ fi
 # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1622: checking for $ac_word" >&5
+echo "configure:1667: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1649,7 +1694,7 @@ if test -n "$ac_tool_prefix"; then
   # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1653: checking for $ac_word" >&5
+echo "configure:1698: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1683,7 +1728,7 @@ fi
 
 # check if ar takes S
 echo $ac_n "checking for ar S""... $ac_c" 1>&6
-echo "configure:1687: checking for ar S" >&5
+echo "configure:1732: checking for ar S" >&5
 if eval "test \"`echo '$''{'libc_cv_ar_S'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1691,7 +1736,7 @@ else
 tmplib=lib$$.a
 rm -f $tmpo $tmplib
 touch $tmpo
-if { ac_try='${AR-ar} rcuS $tmplib $tmpo > /dev/null 2>&1'; { (eval echo configure:1695: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+if { ac_try='${AR-ar} rcuS $tmplib $tmpo > /dev/null 2>&1'; { (eval echo configure:1740: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
   libc_cv_ar_S=yes
 else
   libc_cv_ar_S=no
@@ -1701,25 +1746,6 @@ fi
 
 echo "$ac_t""$libc_cv_ar_S" 1>&6
 
-# check for recent compiler
-echo $ac_n "checking compiler version""... $ac_c" 1>&6
-echo "configure:1707: checking compiler version" >&5
-case `${CC-cc} -v 2>&1` in
-  *egcs-2.91.* | *egcs-1.0.[2-9]* | *egcs-1.1* | *2.8.[1-9]* | *2.9.[0-9]*)
-    cc_is_recent="ok"
-    ;;
-  *)
-    cc_is_recent="too old"
-    ;;
-esac
-echo "$ac_t""$cc_is_recent" 1>&6
-if test "$cc_is_recent" != "ok"; then
-  echo "configure: warning: 
-*** Your compiler is too old.
-*** You need at least egcs 1.0.2 or GNU CC 2.8.1 to compile glibc.
-" 1>&2
-fi
-
 # Test if LD_LIBRARY_PATH contains the notation for the current directory
 # since this would lead to problems installing/building glibc.
 # LD_LIBRARY_PATH contains the current directory if one of the following
@@ -1728,7 +1754,7 @@ fi
 # - two terminals occur directly after each other
 # - the path contains an element with a dot in it
 echo $ac_n "checking LD_LIBRARY_PATH variable""... $ac_c" 1>&6
-echo "configure:1732: checking LD_LIBRARY_PATH variable" >&5
+echo "configure:1758: checking LD_LIBRARY_PATH variable" >&5
 case ${LD_LIBRARY_PATH} in
   [:\;]* | *[:\;] | *[:\;][:\;]* |  *[:\;]. | .[:\;]*| . | *[:\;].[:\;]* )
     ld_library_path_setting="contains current directory"
@@ -1739,14 +1765,16 @@ case ${LD_LIBRARY_PATH} in
 esac
 echo "$ac_t""$ld_library_path_setting" 1>&6
 if test "$ld_library_path_setting" != "ok"; then
-{ echo "configure: error: *** LD_LIBRARY_PATH shouldn't contain the current path when building glibc.
-*** Please change the environment variable and run configure again." 1>&2; exit 1; }
+{ echo "configure: error: 
+*** LD_LIBRARY_PATH shouldn't contain the current directory when
+*** building glibc. Please change the environment variable
+*** and run configure again." 1>&2; exit 1; }
 fi
 
 # Extract the first word of "bash", so it can be a program name with args.
 set dummy bash; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1750: checking for $ac_word" >&5
+echo "configure:1778: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_BASH'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1788,7 +1816,7 @@ if test "$BASH" = no; then
   # Extract the first word of "ksh", so it can be a program name with args.
 set dummy ksh; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1792: checking for $ac_word" >&5
+echo "configure:1820: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_KSH'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1834,7 +1862,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1838: checking for $ac_word" >&5
+echo "configure:1866: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1869,7 +1897,7 @@ test -n "$PERL" || PERL="no"
 
 
 echo $ac_n "checking for signed size_t type""... $ac_c" 1>&6
-echo "configure:1873: checking for signed size_t type" >&5
+echo "configure:1901: checking for signed size_t type" >&5
 if eval "test \"`echo '$''{'libc_cv_signed_size_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1893,12 +1921,12 @@ EOF
 fi
 
 echo $ac_n "checking for libc-friendly stddef.h""... $ac_c" 1>&6
-echo "configure:1897: checking for libc-friendly stddef.h" >&5
+echo "configure:1925: checking for libc-friendly stddef.h" >&5
 if eval "test \"`echo '$''{'libc_cv_friendly_stddef'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1902 "configure"
+#line 1930 "configure"
 #include "confdefs.h"
 #define __need_size_t
 #define __need_wchar_t
@@ -1913,7 +1941,7 @@ size_t size; wchar_t wchar;
 if (&size == NULL || &wchar == NULL) abort ();
 ; return 0; }
 EOF
-if { (eval echo configure:1917: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1945: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   libc_cv_friendly_stddef=yes
 else
@@ -1932,7 +1960,7 @@ override stddef.h = # The installed <stddef.h> seems to be libc-friendly."
 fi
 
 echo $ac_n "checking whether we need to use -P to assemble .S files""... $ac_c" 1>&6
-echo "configure:1936: checking whether we need to use -P to assemble .S files" >&5
+echo "configure:1964: checking whether we need to use -P to assemble .S files" >&5
 if eval "test \"`echo '$''{'libc_cv_need_minus_P'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1954,45 +1982,8 @@ if test $libc_cv_need_minus_P = yes; then
 asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
 fi
 
-# gcc 2.7.x has a bug where if -pipe is set, the assembler will always
-# be told to read stdin.  This causes the compiler to hang when fed an
-# .s file.
-if test $ac_cv_prog_gcc = yes; then
- case `${CC-cc} -v 2>&1` in
-  *2.7*)
-  # We must check this even if -pipe is not given here, because the user
-  # might do `make CFLAGS=-pipe'.
-  echo $ac_n "checking for gcc 2.7.x -pipe bug""... $ac_c" 1>&6
-echo "configure:1967: checking for gcc 2.7.x -pipe bug" >&5
-if eval "test \"`echo '$''{'libc_cv_gcc_pipe_bug'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-     cp /dev/null conftest.s
-   cat >conftest1.s <<EOF
-.nosuchdirective
-EOF
-   if ${CC-cc} -pipe -c conftest.s <conftest1.s 2>/dev/null; then
-    libc_cv_gcc_pipe_bug=no
-   else
-    libc_cv_gcc_pipe_bug=yes
-   fi
-   rm -f conftest*
-fi
-
-echo "$ac_t""$libc_cv_gcc_pipe_bug" 1>&6
-  if test $libc_cv_gcc_pipe_bug = yes; then
-   makeCC="${CC-cc} -B\$(common-objpfx)"
-   makeCFLAGS=$CFLAGS
-   CFLAGS=`echo $CFLAGS |sed 's/-pipe//'`
-  fi;;
- *) libc_cv_gcc_pipe_bug=no;;
- esac
-else
- libc_cv_gcc_pipe_bug=no
-fi
-
 echo $ac_n "checking for assembler global-symbol directive""... $ac_c" 1>&6
-echo "configure:1996: checking for assembler global-symbol directive" >&5
+echo "configure:1987: checking for assembler global-symbol directive" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_global_directive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2022,7 +2013,7 @@ EOF
 fi
 
 echo $ac_n "checking for .set assembler directive""... $ac_c" 1>&6
-echo "configure:2026: checking for .set assembler directive" >&5
+echo "configure:2017: checking for .set assembler directive" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_set_directive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2056,7 +2047,7 @@ EOF
 fi
 
 echo $ac_n "checking for .symver assembler directive""... $ac_c" 1>&6
-echo "configure:2060: checking for .symver assembler directive" >&5
+echo "configure:2051: checking for .symver assembler directive" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_symver_directive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2075,7 +2066,7 @@ fi
 
 echo "$ac_t""$libc_cv_asm_symver_directive" 1>&6
 echo $ac_n "checking for ld --version-script""... $ac_c" 1>&6
-echo "configure:2079: checking for ld --version-script" >&5
+echo "configure:2070: checking for ld --version-script" >&5
 if eval "test \"`echo '$''{'libc_cv_ld_version_script_option'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2098,7 +2089,7 @@ EOF
     if { ac_try='${CC-cc} $CFLAGS -shared -o conftest.so conftest.o
 					-nostartfiles -nostdlib
 					-Wl,--version-script,conftest.map
-		       1>&5'; { (eval echo configure:2102: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
+		       1>&5'; { (eval echo configure:2093: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
     then
       libc_cv_ld_version_script_option=yes
     else
@@ -2136,7 +2127,7 @@ if test $VERSIONING = no; then
 fi
 if test $elf = yes; then
   echo $ac_n "checking for .previous assembler directive""... $ac_c" 1>&6
-echo "configure:2140: checking for .previous assembler directive" >&5
+echo "configure:2131: checking for .previous assembler directive" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_previous_directive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2144,7 +2135,7 @@ else
 .section foo_section
 .previous
 EOF
-  if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2148: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+  if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2139: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
     libc_cv_asm_previous_directive=yes
   else
     libc_cv_asm_previous_directive=no
@@ -2160,7 +2151,7 @@ EOF
 
   else
     echo $ac_n "checking for .popsection assembler directive""... $ac_c" 1>&6
-echo "configure:2164: checking for .popsection assembler directive" >&5
+echo "configure:2155: checking for .popsection assembler directive" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_popsection_directive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2168,7 +2159,7 @@ else
 .pushsection foo_section
 .popsection
 EOF
-    if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2172: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+    if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:2163: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
       libc_cv_asm_popsection_directive=yes
     else
       libc_cv_asm_popsection_directive=no
@@ -2188,12 +2179,12 @@ fi
 
 if test $elf != yes; then
   echo $ac_n "checking for .init and .fini sections""... $ac_c" 1>&6
-echo "configure:2192: checking for .init and .fini sections" >&5
+echo "configure:2183: checking for .init and .fini sections" >&5
 if eval "test \"`echo '$''{'libc_cv_have_initfini'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2197 "configure"
+#line 2188 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -2202,7 +2193,7 @@ asm (".section .init");
 				    asm (".text");
 ; return 0; }
 EOF
-if { (eval echo configure:2206: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2197: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   libc_cv_have_initfini=yes
 else
@@ -2230,19 +2221,19 @@ if test $elf = yes; then
 else
   if test $ac_cv_prog_cc_works = yes; then
     echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6
-echo "configure:2234: checking for _ prefix on C symbol names" >&5
+echo "configure:2225: checking for _ prefix on C symbol names" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2239 "configure"
+#line 2230 "configure"
 #include "confdefs.h"
 asm ("_glibc_foobar:");
 int main() {
 glibc_foobar ();
 ; return 0; }
 EOF
-if { (eval echo configure:2246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2237: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   libc_cv_asm_underscores=yes
 else
@@ -2257,17 +2248,17 @@ fi
 echo "$ac_t""$libc_cv_asm_underscores" 1>&6
   else
     echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6
-echo "configure:2261: checking for _ prefix on C symbol names" >&5
+echo "configure:2252: checking for _ prefix on C symbol names" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2266 "configure"
+#line 2257 "configure"
 #include "confdefs.h"
 void underscore_test(void) {
 return; }
 EOF
-if { (eval echo configure:2271: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2262: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   if grep _underscore_test conftest* >/dev/null; then
     rm -f conftest*
     libc_cv_asm_underscores=yes
@@ -2299,7 +2290,7 @@ if test $elf = yes; then
 fi
 
 echo $ac_n "checking for assembler .weak directive""... $ac_c" 1>&6
-echo "configure:2303: checking for assembler .weak directive" >&5
+echo "configure:2294: checking for assembler .weak directive" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_weak_directive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2322,7 +2313,7 @@ echo "$ac_t""$libc_cv_asm_weak_directive" 1>&6
 
 if test $libc_cv_asm_weak_directive = no; then
   echo $ac_n "checking for assembler .weakext directive""... $ac_c" 1>&6
-echo "configure:2326: checking for assembler .weakext directive" >&5
+echo "configure:2317: checking for assembler .weakext directive" >&5
 if eval "test \"`echo '$''{'libc_cv_asm_weakext_directive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2360,7 +2351,7 @@ EOF
 fi
 
 echo $ac_n "checking for ld --no-whole-archive""... $ac_c" 1>&6
-echo "configure:2364: checking for ld --no-whole-archive" >&5
+echo "configure:2355: checking for ld --no-whole-archive" >&5
 if eval "test \"`echo '$''{'libc_cv_ld_no_whole_archive'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2371,7 +2362,7 @@ __throw () {}
 EOF
 if { ac_try='${CC-cc} $CFLAGS
 			    -nostdlib -nostartfiles -Wl,--no-whole-archive
-			    -o conftest conftest.c 1>&5'; { (eval echo configure:2375: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+			    -o conftest conftest.c 1>&5'; { (eval echo configure:2366: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
   libc_cv_ld_no_whole_archive=yes
 else
   libc_cv_ld_no_whole_archive=no
@@ -2382,7 +2373,7 @@ fi
 echo "$ac_t""$libc_cv_ld_no_whole_archive" 1>&6
 
 echo $ac_n "checking for gcc -fno-exceptions""... $ac_c" 1>&6
-echo "configure:2386: checking for gcc -fno-exceptions" >&5
+echo "configure:2377: checking for gcc -fno-exceptions" >&5
 if eval "test \"`echo '$''{'libc_cv_gcc_no_exceptions'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2393,7 +2384,7 @@ __throw () {}
 EOF
 if { ac_try='${CC-cc} $CFLAGS
 			    -nostdlib -nostartfiles -fno-exceptions
-			    -o conftest conftest.c 1>&5'; { (eval echo configure:2397: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+			    -o conftest conftest.c 1>&5'; { (eval echo configure:2388: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
   libc_cv_gcc_no_exceptions=yes
 else
   libc_cv_gcc_no_exceptions=no
@@ -2405,14 +2396,14 @@ echo "$ac_t""$libc_cv_gcc_no_exceptions" 1>&6
 
 if test "$base_machine" = alpha ; then
 echo $ac_n "checking for function ..ng prefix""... $ac_c" 1>&6
-echo "configure:2409: checking for function ..ng prefix" >&5
+echo "configure:2400: checking for function ..ng prefix" >&5
 if eval "test \"`echo '$''{'libc_cv_gcc_alpha_ng_prefix'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.c <<\EOF
 foo () { }
 EOF
-if { ac_try='${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null'; { (eval echo configure:2416: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
+if { ac_try='${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null'; { (eval echo configure:2407: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; };
 then
   libc_cv_gcc_alpha_ng_prefix=yes
 else
@@ -2436,12 +2427,12 @@ fi
 fi
 
 echo $ac_n "checking for DWARF2 unwind info support""... $ac_c" 1>&6
-echo "configure:2440: checking for DWARF2 unwind info support" >&5
+echo "configure:2431: checking for DWARF2 unwind info support" >&5
 if eval "test \"`echo '$''{'libc_cv_gcc_dwarf2_unwind_info'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.c <<EOF
-#line 2445 "configure"
+#line 2436 "configure"
 static char __EH_FRAME_BEGIN__;
 _start ()
 {
@@ -2468,7 +2459,7 @@ __bzero () {}
 EOF
 if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame_info
 			    -nostdlib -nostartfiles
-			    -o conftest conftest.c -lgcc >&5'; { (eval echo configure:2472: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+			    -o conftest conftest.c -lgcc >&5'; { (eval echo configure:2463: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
   libc_cv_gcc_dwarf2_unwind_info=static
 else
   libc_cv_gcc_dwarf2_unwind_info=no
@@ -2476,7 +2467,7 @@ fi
 if test $libc_cv_gcc_dwarf2_unwind_info = no; then
   if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame
 			      -nostdlib -nostartfiles
-			      -o conftest conftest.c -lgcc >&5'; { (eval echo configure:2480: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+			      -o conftest conftest.c -lgcc >&5'; { (eval echo configure:2471: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
     libc_cv_gcc_dwarf2_unwind_info=yes
   else
     libc_cv_gcc_dwarf2_unwind_info=no
@@ -2550,7 +2541,7 @@ if test "$uname" = "sysdeps/generic"; then
   fi
 
   echo $ac_n "checking OS release for uname""... $ac_c" 1>&6
-echo "configure:2554: checking OS release for uname" >&5
+echo "configure:2545: checking OS release for uname" >&5
 if eval "test \"`echo '$''{'libc_cv_uname_release'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2572,7 +2563,7 @@ echo "$ac_t""$libc_cv_uname_release" 1>&6
   uname_release="$libc_cv_uname_release"
 
   echo $ac_n "checking OS version for uname""... $ac_c" 1>&6
-echo "configure:2576: checking OS version for uname" >&5
+echo "configure:2567: checking OS version for uname" >&5
 if eval "test \"`echo '$''{'libc_cv_uname_version'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2594,7 +2585,7 @@ else
 fi
 
 echo $ac_n "checking stdio selection""... $ac_c" 1>&6
-echo "configure:2598: checking stdio selection" >&5
+echo "configure:2589: checking stdio selection" >&5
 
 case $stdio in
 libio) cat >> confdefs.h <<\EOF
@@ -2606,7 +2597,7 @@ esac
 echo "$ac_t""$stdio" 1>&6
 
 echo $ac_n "checking ldap selection""... $ac_c" 1>&6
-echo "configure:2610: checking ldap selection" >&5
+echo "configure:2601: checking ldap selection" >&5
 
 case $add_ons in
 *ldap*)
@@ -2669,7 +2660,7 @@ if test $static = no && test $shared = yes; then
 fi
 
 echo $ac_n "checking whether -fPIC is default""... $ac_c" 1>&6
-echo "configure:2673: checking whether -fPIC is default" >&5
+echo "configure:2664: checking whether -fPIC is default" >&5
 if eval "test \"`echo '$''{'pic_default'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2705,21 +2696,6 @@ fi
 VERSION=`sed -e 's/^#define VERSION "\([^"]*\)"/\1/p' -e d < $srcdir/version.h`
 
 
-if test $libc_cv_gcc_pipe_bug = yes; then
- realCC=$CC
- CC=$makeCC
- CFLAGS=$makeCFLAGS
-fi
-    if test -r /vmunix; then
-      kernel_id=`strings /vmunix | grep UNIX`
-    elif test -r /dynix; then
-      kernel_id=`strings /dynix | grep DYNIX`
-    else
-      kernel_id=
-    fi
-
-
-
 trap '' 1 2 15
 cat > confcache <<\EOF
 # This file is a shell script that caches the results of configure
@@ -2863,9 +2839,10 @@ s%@sysnames@%$sysnames%g
 s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
 s%@INSTALL_DATA@%$INSTALL_DATA%g
 s%@LN_S@%$LN_S%g
+s%@CC@%$CC%g
+s%@MAKE@%$MAKE%g
 s%@MSGFMT@%$MSGFMT%g
 s%@MAKEINFO@%$MAKEINFO%g
-s%@CC@%$CC%g
 s%@cross_linkable@%$cross_linkable%g
 s%@build@%$build%g
 s%@build_alias@%$build_alias%g
@@ -3164,16 +3141,10 @@ while test -n "$ac_sources"; do
 done
 EOF
 cat >> $CONFIG_STATUS <<EOF
-realCC=$realCC
 echo '$config_vars' >> config.make; test -d bits || mkdir bits
 EOF
 cat >> $CONFIG_STATUS <<\EOF
 
-if test "$realCC"; then
- sed -e 's/%{pipe:-}/%|/g' `$realCC -print-file-name=specs` >specsT
- mv specsT specs
-fi
-
 exit 0
 EOF
 chmod +x $CONFIG_STATUS
diff --git a/configure.in b/configure.in
index fa8231931c..f698710ce1 100644
--- a/configure.in
+++ b/configure.in
@@ -429,33 +429,30 @@ if test "$INSTALL" = "${srcdir}/install-sh -c"; then
   INSTALL='\$(..)./install-sh -c'
 fi
 AC_PROG_LN_S
-AC_CHECK_PROGS(MSGFMT, msgfmt gmsgfmt, :)
-if test "$MSGFMT" != ":"; then
-changequote(,)dnl Need [] for regexps.
-  if $MSGFMT --version 2>&1 | grep 'GNU gettext.*0\.[1-9][0-9]' >/dev/null 2>&1
-changequote([,])dnl
-  then : # msgfmt from gettext 0.10 or greater, works.
-  else
-    AC_MSG_WARN([
-*** (g)msgfmt is too old or wrong version (need gettext 0.10 or better).])
-    MSGFMT=":"
-  fi
-fi
 
-AC_CHECK_PROG(MAKEINFO, makeinfo, makeinfo)
-if test "$MAKEINFO"; then
-changequote(,)dnl Need [] for regexps.
-  if $MAKEINFO --version | grep 'texinfo 3\.[1-9][1-9]' >/dev/null 2>&1
-changequote([,])dnl
-  then : # Makeinfo 3.11 or greater, works.
-  else
-    AC_MSG_WARN([
-*** makeinfo is too old (need version 3.11 or better).
-*** You should install the needed version and re-configure since otherwise
-*** you won't get the info pages installed.])
-    MAKEINFO=
-  fi
-fi
+# These programs are version sensitive.
+AC_CHECK_PROG_VER(CC, gcc cc, -v,
+  [version \([egcs0-9.-]*\)],
+  [egcs-2.91.*|egcs-2.90.2[789]|egcs-2.90.[3-9][0-9]|2.8.[1-9]*|2.9.[0-9]*], t)
+AC_CHECK_PROG_VER(MAKE, make gmake, --version,
+  [version \([0-9][0-9.]*\), by],
+  [3.75 | 3.76.[2-9] | 3.7[789]* | 3.[89]*], t)
+
+AC_CHECK_PROG_VER(MSGFMT, msgfmt gmsgfmt, --version,
+  [GNU gettext.*\([0-9][0-9]*\.[0-9]*\)],
+  [0.[1-9][0-9] | [1-9].*])
+AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
+  [GNU texinfo \([0-9][0-9.]*\)],
+  [3.1[1-9] | 3.[2-9][0-9]])
+
+test -n "$ac_verc_fatal" && AC_MSG_ERROR([
+*** Some critical program is missing or too old.
+*** Check the INSTALL file for required versions.])
+
+test -n "$ac_verc_fail" && AC_MSG_WARN([
+*** An auxiliary program is missing or too old;
+*** some features will be disabled.
+*** Check the INSTALL file for required versions.])
 
 AC_PROG_CC_LOCAL
 AC_CANONICAL_BUILD
@@ -482,26 +479,6 @@ fi
 rm -f $tmpo $tmplib])
 AC_SUBST(libc_cv_ar_S)dnl
 
-# check for recent compiler
-AC_MSG_CHECKING(compiler version)
-changequote(,)dnl
-case `${CC-cc} -v 2>&1` in
-  *egcs-2.91.* | *egcs-1.0.[2-9]* | *egcs-1.1* | *2.8.[1-9]* | *2.9.[0-9]*)
-    cc_is_recent="ok"
-    ;;
-  *)
-    cc_is_recent="too old"
-    ;;
-esac
-changequote([,])dnl
-AC_MSG_RESULT($cc_is_recent)
-if test "$cc_is_recent" != "ok"; then
-  AC_MSG_WARN([
-*** Your compiler is too old.
-*** You need at least egcs 1.0.2 or GNU CC 2.8.1 to compile glibc.
-])
-fi
-
 # Test if LD_LIBRARY_PATH contains the notation for the current directory
 # since this would lead to problems installing/building glibc.
 # LD_LIBRARY_PATH contains the current directory if one of the following
@@ -522,9 +499,10 @@ esac
 changequote([,])dnl
 AC_MSG_RESULT($ld_library_path_setting)
 if test "$ld_library_path_setting" != "ok"; then
-AC_MSG_ERROR(
-*** LD_LIBRARY_PATH shouldn't contain the current path when building glibc.
-*** Please change the environment variable and run configure again.)
+AC_MSG_ERROR([
+*** LD_LIBRARY_PATH shouldn't contain the current directory when
+*** building glibc. Please change the environment variable
+*** and run configure again.])
 fi
 
 AC_PATH_PROG(BASH, bash, no)
@@ -608,36 +586,6 @@ if test $libc_cv_need_minus_P = yes; then
 asm-CPPFLAGS = -P # The assembler can't grok cpp's # line directives."
 fi
 
-# gcc 2.7.x has a bug where if -pipe is set, the assembler will always
-# be told to read stdin.  This causes the compiler to hang when fed an
-# .s file.
-if test $ac_cv_prog_gcc = yes; then
- case `${CC-cc} -v 2>&1` in
-  *2.7*)
-  # We must check this even if -pipe is not given here, because the user
-  # might do `make CFLAGS=-pipe'.
-  AC_CACHE_CHECK(for gcc 2.7.x -pipe bug, libc_cv_gcc_pipe_bug, [dnl
-   cp /dev/null conftest.s
-   cat >conftest1.s <<EOF
-.nosuchdirective
-EOF
-   if ${CC-cc} -pipe -c conftest.s <conftest1.s 2>/dev/null; then
-    libc_cv_gcc_pipe_bug=no
-   else
-    libc_cv_gcc_pipe_bug=yes
-   fi
-   rm -f conftest*])
-  if test $libc_cv_gcc_pipe_bug = yes; then
-   makeCC="${CC-cc} -B\$(common-objpfx)"
-   makeCFLAGS=$CFLAGS
-   CFLAGS=`echo $CFLAGS |sed 's/-pipe//'`
-  fi;;
- *) libc_cv_gcc_pipe_bug=no;;
- esac
-else
- libc_cv_gcc_pipe_bug=no
-fi
-
 AC_CACHE_CHECK(for assembler global-symbol directive,
 	       libc_cv_asm_global_directive, [dnl
 libc_cv_asm_global_directive=UNKNOWN
@@ -1179,16 +1127,5 @@ fi
 VERSION=`sed -e 's/^#define VERSION "\([^"]*\)"/\1/p' -e d < $srcdir/version.h`
 AC_SUBST(VERSION)
 
-if test $libc_cv_gcc_pipe_bug = yes; then
- realCC=$CC
- CC=$makeCC
- CFLAGS=$makeCFLAGS
-fi
-AC_OUTPUT_COMMANDS([
-if test "$realCC"; then
- sed -e 's/%{pipe:-}/%|/g' `$realCC -print-file-name=specs` >specsT
- mv specsT specs
-fi], [realCC=$realCC])
-
 AC_OUTPUT(config.make glibcbug ${config_makefile} ${config_uname}, ,
           [echo '$config_vars' >> config.make; test -d bits || mkdir bits])
diff --git a/intl/explodename.c b/intl/explodename.c
index ce5b06b288..8dad496a5e 100644
--- a/intl/explodename.c
+++ b/intl/explodename.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
    Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
 
    This file is part of the GNU C Library.  Its master source is NOT part of
@@ -23,8 +23,15 @@
 # include <config.h>
 #endif
 
-#include <stdlib.h>
-#include <string.h>
+#if defined STDC_HEADERS || defined _LIBC
+# include <stdlib.h>
+#endif
+
+#if defined HAVE_STRING_H || defined _LIBC
+# include <string.h>
+#else
+# include <strings.h>
+#endif
 #include <sys/types.h>
 
 #include "loadinfo.h"
diff --git a/libio/stdio.h b/libio/stdio.h
index 13287f9880..4803470c81 100644
--- a/libio/stdio.h
+++ b/libio/stdio.h
@@ -1,5 +1,5 @@
 /* Define ISO C stdio on top of C++ iostreams.
-   Copyright (C) 1991, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1991, 94, 95, 96, 97, 98 Free Software Foundation, Inc.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public License as
@@ -559,7 +559,7 @@ typedef __off64_t off64_t;
 # ifndef __USE_FILE_OFFSET64
 extern int fseeko __P ((FILE *__stream, __off_t __off, int __whence));
 # else
-extern int fseeko __P ((FILE *__stream, __off_t __off, int __whence))
+extern int fseeko __P ((FILE *__stream, __off64_t __off, int __whence))
      __asm__ ("fseeko64");
 # endif
 # ifdef __USE_LARGEFILE64
@@ -570,7 +570,7 @@ extern int fseeko64 __P ((FILE *__stream, __off64_t __off, int __whence));
 # ifndef __USE_FILE_OFFSET64
 extern __off_t ftello __P ((FILE *__stream));
 # else
-extern __off_t ftello __P ((FILE *__stream)) __asm__ ("ftello");
+extern __off64_t ftello __P ((FILE *__stream)) __asm__ ("ftello64");
 # endif
 # ifdef __USE_LARGEFILE64
 extern __off64_t ftello64 __P ((FILE *__stream));
diff --git a/posix/unistd.h b/posix/unistd.h
index 9e1cc8e8e0..632f24d018 100644
--- a/posix/unistd.h
+++ b/posix/unistd.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 Free Software Foundation, Inc.
+/* Copyright (C) 1991,92,93,94,95,96,97,98 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -273,7 +273,7 @@ extern __off_t __lseek __P ((int __fd, __off_t __offset, int __whence));
 #ifndef __USE_FILE_OFFSET64
 extern __off_t lseek __P ((int __fd, __off_t __offset, int __whence));
 #else
-extern __off_t lseek __P ((int __fd, __off64_t __offset, int __whence))
+extern __off64_t lseek __P ((int __fd, __off64_t __offset, int __whence))
      __asm__ ("lseek64");
 #endif
 #ifdef __USE_LARGEFILE64
diff --git a/resolv/res_comp.c b/resolv/res_comp.c
index ed4bcdc58f..94a6270b6e 100644
--- a/resolv/res_comp.c
+++ b/resolv/res_comp.c
@@ -354,6 +354,7 @@ dn_find(exp_dn, msg, dnptrs, lastdnptr)
  */
 #define PERIOD 0x2e
 #define	hyphenchar(c) ((c) == 0x2d)
+#define	underscorechar(c) ((c) == 0x5f)
 #define bslashchar(c) ((c) == 0x5c)
 #define periodchar(c) ((c) == PERIOD)
 #define asterchar(c) ((c) == 0x2a)
@@ -362,7 +363,7 @@ dn_find(exp_dn, msg, dnptrs, lastdnptr)
 #define digitchar(c) ((c) >= 0x30 && (c) <= 0x39)
 
 #define borderchar(c) (alphachar(c) || digitchar(c))
-#define middlechar(c) (borderchar(c) || hyphenchar(c))
+#define middlechar(c) (borderchar(c) || hyphenchar(c) || underscorechar(c))
 #define	domainchar(c) ((c) > 0x20 && (c) < 0x7f)
 
 int
diff --git a/stdlib/isomac.c b/stdlib/isomac.c
index 47040e61e6..451cf0c6f5 100644
--- a/stdlib/isomac.c
+++ b/stdlib/isomac.c
@@ -1,5 +1,5 @@
 /* Check system header files for ISO 9899:1990 (ISO C) compliance.
-   Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jens Schweikhardt <schweikh@noc.dfn.de>, 1996.
 
@@ -176,8 +176,8 @@ static char *macros[] =
 /* Format string to build command to invoke compiler.  */
 static const char fmt[] = "\
 echo \"#include <%s>\" |\
-%s -E -dM -ansi -pedantic %s -D_LIBC -I. -I `%s --print-prog-name=include` -\
-> %s";
+%s -E -dM -ansi -pedantic %s -D_LIBC -I. \
+-isystem `%s --print-prog-name=include` - > %s";
 
 
 /* The compiler we use (given on the command line).  */
diff --git a/sysdeps/i386/bits/string.h b/sysdeps/i386/bits/string.h
index b95ec8a4c2..6885cbb019 100644
--- a/sysdeps/i386/bits/string.h
+++ b/sysdeps/i386/bits/string.h
@@ -72,7 +72,7 @@ __memcpy_c (void *__dest, __const void *__src, size_t __n)
 	*(2 + (const unsigned short int *) __src);
       return __dest;
     case 8:
-      *(unsigned long int *) __dest = *(const unsigned long int *) __to;
+      *(unsigned long int *) __dest = *(const unsigned long int *) __src;
       *(1 + (unsigned long int *) __dest) =
 	*(1 + (const unsigned long int *) __src);
       return __dest;
@@ -177,13 +177,13 @@ __memset_cc (void *__s, unsigned long int __pattern, size_t __n)
   switch (__n)
     {
     case 0:
-      return s;
+      return __s;
     case 1:
       *(unsigned char *) __s = __pattern;
       return __s;
     case 2:
       *(unsigned short int *) __s = __pattern;
-      return s;
+      return __s;
     case 3:
       *(unsigned short int *) __s = __pattern;
       *(2 + (unsigned char *) __s) = __pattern;
@@ -210,7 +210,7 @@ __memset_cc (void *__s, unsigned long int __pattern, size_t __n)
       __COMMON_CODE ("\n\tstosb");
       return __s;
     case 2:
-      __COMMON__CODE ("\n\tstosw");
+      __COMMON_CODE ("\n\tstosw");
       return s;
     case 3:
       __COMMON_CODE ("\n\tstosw\n\tstosb");
diff --git a/sysdeps/i386/i686/strtok.S b/sysdeps/i386/i686/strtok.S
new file mode 100644
index 0000000000..62d54c4e1a
--- /dev/null
+++ b/sysdeps/i386/i686/strtok.S
@@ -0,0 +1,240 @@
+/* strtok (str, delim) -- Return next DELIM separated token from STR.
+   For Intel 80686.
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <sysdep.h>
+#include "asm-syntax.h"
+
+/* This file can be used for three variants of the strtok function:
+
+   strtok:
+	INPUT PARAMETER:
+	str		(sp + 4)
+	delim		(sp + 8)
+
+   strtok_r:
+	INPUT PARAMETER:
+	str		(sp + 4)
+	delim		(sp + 8)
+	save_ptr	(sp + 12)
+
+   We do a common implementation here.  */
+
+#ifndef USE_AS_STRTOK_R
+	.bss
+	.local save_ptr
+	ASM_TYPE_DIRECTIVE (save_ptr, @object)
+	.size save_ptr, 4
+save_ptr:
+	.space 4
+
+#define FUNCTION strtok
+#endif
+
+	.text
+
+#if !defined USE_AS_STRTOK_R && defined PIC
+0:	movl (%esp), %ebx
+	ret
+#endif
+
+ENTRY (FUNCTION)
+
+#if !defined USE_AS_STRTOK_R && defined PIC
+	pushl %ebx			/* Save PIC register.  */
+	call 0b
+	addl $_GLOBAL_OFFSET_TABLE_, %ebx
+#endif
+
+	/* First we create a table with flags for all possible characters.
+	   For the ASCII (7bit/8bit) or ISO-8859-X character sets which are
+	   supported by the C string functions we have 256 characters.
+	   Before inserting marks for the stop characters we clear the whole
+	   table.  */
+	movl %edi, %edx
+	subl $256, %esp
+	movl $64, %ecx
+	movl %esp, %edi
+	xorl %eax, %eax
+	rep
+	stosl
+
+	/* Note: %ecx = 0 !!! */
+	movl %edx, %edi
+
+#if !defined USE_AS_STRTOK_R && defined PIC
+	movl 264(%esp), %edx		/* Get start of string.  */
+#else
+	movl 260(%esp), %edx		/* Get start of string.  */
+#endif
+
+#ifdef USE_AS_STRTOK_R
+	/* The value is stored in the third argument.  */
+	movl 268(%esp), %eax
+	movl (%eax), %eax
+#else
+	/* The value is in the local variable defined above.  But
+	   we have to take care for PIC code.  */
+# ifndef PIC
+	movl save_ptr, %eax
+# else
+	movl save_ptr@GOTOFF(%ebx), %eax
+# endif
+#endif
+
+	/* If the pointer is NULL we have to use the stored value of
+	   the last run.  */
+	cmpl $0, %edx
+	cmove %eax, %edx
+
+#if !defined USE_AS_STRTOK_R && defined PIC
+	movl 268(%esp), %eax		/* Get start of delimiter set.  */
+#else
+	movl 264(%esp), %eax		/* Get start of delimiter set.  */
+#endif
+
+/* For understanding the following code remember that %ecx == 0 now.
+   Although all the following instruction only modify %cl we always
+   have a correct zero-extended 32-bit value in %ecx.  */
+
+L(2):	movb (%eax), %cl	/* get byte from stopset */
+	testb %cl, %cl		/* is NUL char? */
+	jz L(1)			/* yes => start compare loop */
+	movb %cl, (%esp,%ecx)	/* set corresponding byte in stopset table */
+
+	movb 1(%eax), %cl	/* get byte from stopset */
+	testb $0xff, %cl	/* is NUL char? */
+	jz L(1)			/* yes => start compare loop */
+	movb %cl, (%esp,%ecx)	/* set corresponding byte in stopset table */
+
+	movb 2(%eax), %cl	/* get byte from stopset */
+	testb $0xff, %cl	/* is NUL char? */
+	jz L(1)			/* yes => start compare loop */
+	movb %cl, (%esp,%ecx)	/* set corresponding byte in stopset table */
+
+	movb 3(%eax), %cl	/* get byte from stopset */
+	addl $4, %eax		/* increment stopset pointer */
+	movb %cl, (%esp,%ecx)	/* set corresponding byte in stopset table */
+	testb $0xff, %cl	/* is NUL char? */
+	jnz L(2)		/* no => process next dword from stopset */
+
+L(1):	leal -4(%edx), %eax	/* prepare loop */
+
+	/* We use a neat trick for the following loop.  Normally we would
+	   have to test for two termination conditions
+	   1. a character in the stopset was found
+	   and
+	   2. the end of the string was found
+	   As a sign that the character is in the stopset we store its
+	   value in the table.  The value of NUL is NUL so the loop
+	   terminates for NUL in every case.  */
+
+L(3):	addl $4, %eax		/* adjust pointer for full loop round */
+
+	movb (%eax), %cl	/* get byte from string */
+	testb %cl, (%esp,%ecx)	/* is it contained in stopset? */
+	jz L(4)			/* no => start of token */
+
+	movb 1(%eax), %cl	/* get byte from string */
+	testb %cl, (%esp,%ecx)	/* is it contained in stopset? */
+	jz L(5)			/* no => start of token */
+
+	movb 2(%eax), %cl	/* get byte from string */
+	testb %cl, (%esp,%ecx)	/* is it contained in stopset? */
+	jz L(6)			/* no => start of token */
+
+	movb 3(%eax), %cl	/* get byte from string */
+	testb %cl, (%esp,%ecx)	/* is it contained in stopset? */
+	jnz L(3)		/* yes => start of loop */
+
+	incl %eax		/* adjust pointer */
+L(6):	incl %eax
+L(5):	incl %eax
+
+	/* Now we have to terminate the string.  */
+
+L(4):	leal -4(%eax), %edx	/* We use %EDX for the next run.  */
+
+L(7):	addl $4, %edx		/* adjust pointer for full loop round */
+
+	movb (%edx), %cl	/* get byte from string */
+	cmpb %cl, (%esp,%ecx)	/* is it contained in skipset? */
+	je L(8)			/* yes => return */
+
+	movb 1(%edx), %cl	/* get byte from string */
+	cmpb %cl, (%esp,%ecx)	/* is it contained in skipset? */
+	je L(9)			/* yes => return */
+
+	movb 2(%edx), %cl	/* get byte from string */
+	cmpb %cl, (%esp,%ecx)	/* is it contained in skipset? */
+	je L(10)		/* yes => return */
+
+	movb 3(%edx), %cl	/* get byte from string */
+	cmpb %cl, (%esp,%ecx)	/* is it contained in skipset? */
+	jne L(7)		/* no => start loop again */
+
+	incl %edx		/* adjust pointer */
+L(10):	incl %edx
+L(9):	incl %edx
+
+L(8):	/* Remove the stopset table.  */
+	addl $256, %esp
+
+	cmpl %eax, %edx
+	je L(returnNULL)	/* There was no token anymore.  */
+
+	movb $0, (%edx)		/* Terminate string.  */
+
+	/* Are we at end of string?  */
+	cmpb $0, %cl
+	leal 1(%edx), %ecx
+	cmovne %ecx, %edx
+
+	/* Store the pointer to the next character.  */
+#ifdef USE_AS_STRTOK_R
+	movl 12(%esp), %ecx
+	movl %edx, (%ecx)
+#else
+# ifndef PIC
+	movl %edx, save_ptr
+# else
+	movl %edx, save_ptr@GOTOFF(%ebx)
+	popl %ebx
+# endif
+#endif
+	ret
+
+L(returnNULL):
+	xorl %eax, %eax
+
+	/* Store current pointer for next round.  */
+#ifdef USE_AS_STRTOK_R
+	movl 12(%esp), %ecx
+	movl %edx, (%ecx)
+#else
+# ifndef PIC
+	movl %edx, save_ptr
+# else
+	movl %edx, save_ptr@GOTOFF(%ebx)
+	popl %ebx
+# endif
+#endif
+	ret
+END (FUNCTION)
diff --git a/sysdeps/i386/i686/strtok_r.S b/sysdeps/i386/i686/strtok_r.S
new file mode 100644
index 0000000000..70048db2c4
--- /dev/null
+++ b/sysdeps/i386/i686/strtok_r.S
@@ -0,0 +1,4 @@
+#define FUNCTION __strtok_r
+#define USE_AS_STRTOK_R	1
+#include <sysdeps/i386/i686/strtok.S>
+weak_alias (__strtok_r, strtok_r)
diff --git a/sysdeps/unix/sysv/linux/getcwd.c b/sysdeps/unix/sysv/linux/getcwd.c
index ed649f8fef..0bf9a9fb0e 100644
--- a/sysdeps/unix/sysv/linux/getcwd.c
+++ b/sysdeps/unix/sysv/linux/getcwd.c
@@ -1,5 +1,5 @@
 /* Determine current working directory.  Linux version.
-   Copyright (C) 1997 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -22,6 +22,7 @@
 #include <limits.h>
 #include <stdlib.h>
 #include <unistd.h>
+#include <sys/syscall.h>
 
 
 /* The "proc" filesystem provides an easy method to retrieve the value.
@@ -31,10 +32,20 @@
    the proc filesystem mounted.  Use the POSIX implementation in this case.  */
 static char *generic_getcwd (char *buf, size_t size) internal_function;
 
+#ifdef __NR_getcwd
+/* Kernel 2.1.92 introduced a third way to get the current working
+   directory: a syscall.  We've got to be careful that even when
+   compiling under 2.1.92+ the libc still runs under older kernels. */
+extern int __syscall_getcwd (char *buf, unsigned long size);
+static no_syscall_getcwd;
+static int no_new_dcache = 1;
+#else
+static int no_new_dcache;
+#endif
+
 char *
 __getcwd (char *buf, size_t size)
 {
-  static int no_new_dcache = 0;
   int save_errno;
   char *path;
   int n;
@@ -66,6 +77,41 @@ __getcwd (char *buf, size_t size)
 
   save_errno = errno;
 
+#ifdef __NR_getcwd
+  if (!no_syscall_getcwd)
+    {
+      int retval;
+
+      do
+      retval = __syscall_getcwd (path, alloc_size);
+      if (retval >= 0)
+	{
+	  if (buf == NULL)
+	    {
+	      buf = realloc (path, strlen (path) + 1);
+	      if (buf == NULL)
+		/* `relloc' failed but we still have the original string.  */
+		buf = path;
+	    }
+	  return buf;
+	}
+
+      if (errno == ENOSYS)
+	{
+	   no_syscall_getcwd = 1;
+	   no_new_dcache = 0;	/* Now we will try the /proc method.  */
+	}
+      else if (errno != ERANGE || buf != NULL)
+	{
+	  if (buf == NULL)
+	    free (path);
+	  return NULL;
+	}
+
+      __set_errno (save_errno);
+    }
+#endif
+
   n = __readlink ("/proc/self/cwd", path, alloc_size - 1);
   if (n != -1)
     {
@@ -79,7 +125,14 @@ __getcwd (char *buf, size_t size)
 	    }
 
 	  path[n] = '\0';
-	  return buf ?: (char *) realloc (path, (size_t) n + 1);
+	  if (buf == NULL)
+	    {
+	      buf = realloc (path, (size_t) n + 1);
+	      if (buf == NULL)
+		/* `relloc' failed but we still have the original string.  */
+		buf = path;
+	    }
+	  return buf;
 	}
       else
 	no_new_dcache = 1;
diff --git a/sysdeps/unix/sysv/linux/i386/chown.c b/sysdeps/unix/sysv/linux/i386/chown.c
index e985ce0dae..7536b26923 100644
--- a/sysdeps/unix/sysv/linux/i386/chown.c
+++ b/sysdeps/unix/sysv/linux/i386/chown.c
@@ -59,9 +59,15 @@ __real_chown (const char *file, uid_t owner, gid_t group)
 #endif
 
 
-#if !defined __NR_lchown || \
-    (defined HAVE_ELF && defined PIC && defined DO_VERSIONING)
-/* compiling under older kernels or for compatibiity */
+#ifndef __NR_lchown
+/* Compiling under older kernels.  */
+int
+__chown_is_lchown (const char *file, uid_t owner, gid_t group)
+{
+  return __syscall_chown (file, owner, group);
+}
+#elif defined HAVE_ELF && defined PIC && defined DO_VERSIONING
+/* Compiling for compatibiity.  */
 int
 __chown_is_lchown (const char *file, uid_t owner, gid_t group)
 {
diff --git a/sysdeps/unix/sysv/linux/i386/i686/sysdep.h b/sysdeps/unix/sysv/linux/i386/i686/sysdep.h
new file mode 100644
index 0000000000..001f3fc4d7
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/i386/i686/sysdep.h
@@ -0,0 +1,71 @@
+/* Copyright (C) 1998 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper, <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _LINUX_I386_I686_SYSDEP_H
+#define _LINUX_I386_I686_SYSDEP_H 1
+
+/* There is some commonality.  */
+#include <sysdeps/unix/sysv/linux/i386/sysdep.h>
+
+/* We define special versions of the error handler code to match the i686's
+   deep branch prediction mechanism.  */
+#ifdef PIC
+# undef SYSCALL_ERROR_HANDLER
+
+/* Store (- %eax) into errno through the GOT.  */
+# ifdef _LIBC_REENTRANT
+#  define SYSCALL_ERROR_HANDLER						      \
+  .type syscall_error,@function;					      \
+0:movl (%esp),%ebx;							      \
+  ret;									      \
+syscall_error:								      \
+  pushl %ebx;								      \
+  call 0b;								      \
+  addl $_GLOBAL_OFFSET_TABLE_, %ebx;					      \
+  xorl %edx, %edx;							      \
+  subl %eax, %edx;							      \
+  pushl %edx;								      \
+  call __errno_location@PLT;						      \
+  popl %ecx;								      \
+  popl %ebx;								      \
+  movl %ecx, (%eax);							      \
+  movl $-1, %eax;							      \
+  jmp L(pseudo_end);							      \
+  .size syscall_error,.-syscall_error;
+/* A quick note: it is assumed that the call to `__errno_location' does
+   not modify the stack!  */
+# else
+#  define SYSCALL_ERROR_HANDLER						      \
+  .type syscall_error,@function;					      \
+0:movl (%esp),%ecx;							      \
+  ret;									      \
+syscall_error:								      \
+  call 0b;								      \
+  addl $_GLOBAL_OFFSET_TABLE_, %ecx;					      \
+  xorl %edx, %edx;							      \
+  subl %eax, %edx;							      \
+  movl errno@GOT(%ecx), %ecx;						      \
+  movl %edx, (%ecx);							      \
+  movl $-1, %eax;							      \
+  jmp L(pseudo_end);							      \
+  .size syscall_error,.-syscall_error;
+# endif	/* _LIBC_REENTRANT */
+#endif	/* PIC */
+
+#endif /* linux/i386/i686/sysdep.h */
diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h
index 713bd44524..2bb82a2009 100644
--- a/sysdeps/unix/sysv/linux/i386/sysdep.h
+++ b/sysdeps/unix/sysv/linux/i386/sysdep.h
@@ -140,10 +140,10 @@ syscall_error:								      \
    %ecx and %edx when we have more than 1 and 2 registers resp.
 
    The code below might look a bit long but we have to take care for
-   the pipelined processors (i586 and up).  Here the `pushl' and `popl'
+   the pipelined processors (i586).  Here the `pushl' and `popl'
    instructions are marked as NP (not pairable) but the exception is
    two consecutive of these instruction.  This gives no penalty on
-   i386 and i486 processors though.  */
+   other processors though.  */
 
 #undef	DO_CALL
 #define DO_CALL(args, syscall_name)			      		      \