From 63bda0c13abdc73893855c2b57e55eaea5835fc3 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Thu, 2 Apr 1998 17:42:53 +0000 Subject: Update. 1998-04-02 Ulrich Drepper * stdlib/isomac.c: Use -isystem instead of -I for system include dir. 1998-03-30 08:05 H.J. Lu * resolv/res_comp.c (underscorechar): New. (middlechar): Allow '_'. 1998-04-02 Ulrich Drepper * 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 . 1998-04-01 21:08 Zack Weinberg * 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 * 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 * 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 * sysdeps/i386/bits/string.h: Fix various typos. Patch by Horst von Brand . * sysdeps/unix/sysv/linux/getcwd.c: Use getcwd syscall in Linux 2.1.92. 1998-04-02 Ulrich Drepper * sysdeps/unix/sysv/linux/i386/chown.c: Handle old kernels without lchown syscall correctly. [PR libc/541]. --- ChangeLog | 51 +++ aclocal.m4 | 96 +++-- configure | 539 ++++++++++++++--------------- configure.in | 117 ++----- intl/explodename.c | 13 +- libio/stdio.h | 6 +- posix/unistd.h | 4 +- resolv/res_comp.c | 3 +- stdlib/isomac.c | 6 +- sysdeps/i386/bits/string.h | 8 +- sysdeps/i386/i686/strtok.S | 240 +++++++++++++ sysdeps/i386/i686/strtok_r.S | 4 + sysdeps/unix/sysv/linux/getcwd.c | 59 +++- sysdeps/unix/sysv/linux/i386/chown.c | 12 +- sysdeps/unix/sysv/linux/i386/i686/sysdep.h | 71 ++++ sysdeps/unix/sysv/linux/i386/sysdep.h | 4 +- 16 files changed, 802 insertions(+), 431 deletions(-) create mode 100644 sysdeps/i386/i686/strtok.S create mode 100644 sysdeps/i386/i686/strtok_r.S create mode 100644 sysdeps/unix/sysv/linux/i386/i686/sysdep.h diff --git a/ChangeLog b/ChangeLog index f3e03d5aae..9eec8e852f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,54 @@ +1998-04-02 Ulrich Drepper + + * stdlib/isomac.c: Use -isystem instead of -I for system include + dir. + +1998-03-30 08:05 H.J. Lu + + * resolv/res_comp.c (underscorechar): New. + (middlechar): Allow '_'. + +1998-04-02 Ulrich Drepper + + * 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 . + +1998-04-01 21:08 Zack Weinberg + + * 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 + + * 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 + + * 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 + + * sysdeps/i386/bits/string.h: Fix various typos. + Patch by Horst von Brand . + + * sysdeps/unix/sysv/linux/getcwd.c: Use getcwd syscall in Linux 2.1.92. + +1998-04-02 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/chown.c: Handle old kernels without + lchown syscall correctly. [PR libc/541]. + 1998-04-02 11:45 Ulrich Drepper * 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 < 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 <&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 < 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 < 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 < 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 <&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 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 </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 <&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 <&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 <&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 <&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 <> 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 </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 , 1995. This file is part of the GNU C Library. Its master source is NOT part of @@ -23,8 +23,15 @@ # include #endif -#include -#include +#if defined STDC_HEADERS || defined _LIBC +# include +#endif + +#if defined HAVE_STRING_H || defined _LIBC +# include +#else +# include +#endif #include #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 , 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 , 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 +#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 +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 , 1997. @@ -22,6 +22,7 @@ #include #include #include +#include /* 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, , 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 + +/* 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) \ -- cgit 1.4.1