diff options
author | Ulrich Drepper <drepper@redhat.com> | 1998-02-01 17:06:45 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1998-02-01 17:06:45 +0000 |
commit | 566efee21908cc59bb0645c3208446f3dedebce8 (patch) | |
tree | 48fa72b2b59511164d37b754bdf49c7c403729c3 | |
parent | 6a844df675b81d6b9057db066446943792ba89fc (diff) | |
download | glibc-566efee21908cc59bb0645c3208446f3dedebce8.tar glibc-566efee21908cc59bb0645c3208446f3dedebce8.tar.gz glibc-566efee21908cc59bb0645c3208446f3dedebce8.tar.bz2 glibc-566efee21908cc59bb0645c3208446f3dedebce8.zip |
Update.
1998-02-02 01:12 Ulrich Drepper <drepper@cygnus.com>
* libc.map: Add _h_errno.
* inet/herrno.c: Make _h_errno weak alias.
* login/Makefile (distribute): Add pty-internal.h.
* nscd/Makefile (distribute): Add all the files missing.
* signal/allocrtsig.c: Fix problem with recognizing whether RT sigs
are available.
* stdio-common/tstscanf.c: Rewrite a bit to continue after errors
and report status at the end.
* sysdeps/unix/sysv/linux/syscalls.list: Add lchown.
* sysdeps/unix/sysv/linux/i386/sysdep.S: Make errno an initialized
variable.
* sysdeps/unix/sysv/linux/powerpc/sysdep.c: Add alias _errno for errno.
* sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.S: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.S: Likewise.
1998-01-03 20:47 Mark Kettenis <kettenis@phys.uva.nl>
* configure.in: Fix --enable-add-ons code.
1998-02-01 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* elf/rtld.c (dl_main): Allow ":" as separator for LD_PRELOAD. Patch
by Rudolf Leitgeb <leitgeb@leland.stanford.edu>.
[PR libc/441]
* sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Use first
occurence in cache. Reported by Rudolf Leitgeb
<leitgeb@leland.stanford.edu>.
[PR libc/440]
1998-02-01 21:18 Ulrich Drepper <drepper@cygnus.com>
* libio/iovsscanf.c: Set errno to 0 before calling _IO_vfscanf so
that it never is EINTR (which is tested for in _IO_vfscanf).
* Makefile.in: Call sub-make with CVSOPTS.
* elf/Makefile (distribute): Add dl-procinfo.h.
* sysdeps/unix/sysv/linux/alpha/Dist: Add rt_sigaction.S.
1998-02-01 15:54 Ulrich Drepper <drepper@cygnus.com>
* version.h (VERSION): Bump to 2.0.92.
1998-01-31 Phil Blundell <philb@gnu.org>
* sysdeps/unix/sysv/linux/siglist.c (_sys_siglist): Additional weak
alias for __new_sys_siglist.
thread and not pthread_detach.
-rw-r--r-- | ChangeLog | 60 | ||||
-rw-r--r-- | Makefile.in | 2 | ||||
-rw-r--r-- | README | 17 | ||||
-rwxr-xr-x | configure | 2 | ||||
-rw-r--r-- | configure.in | 2 | ||||
-rw-r--r-- | elf/Makefile | 2 | ||||
-rw-r--r-- | elf/rtld.c | 6 | ||||
-rw-r--r-- | inet/herrno.c | 3 | ||||
-rw-r--r-- | libc.map | 2 | ||||
-rw-r--r-- | libio/iovsscanf.c | 5 | ||||
-rw-r--r-- | login/Makefile | 3 | ||||
-rw-r--r-- | nscd/Makefile | 5 | ||||
-rw-r--r-- | nss/getXXbyYY_r.c | 12 | ||||
-rw-r--r-- | nss/getXXent_r.c | 14 | ||||
-rw-r--r-- | signal/allocrtsig.c | 4 | ||||
-rw-r--r-- | stdio-common/tstscanf.c | 87 | ||||
-rw-r--r-- | sysdeps/generic/dl-cache.c | 17 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/Dist | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/sysdep.S | 11 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/powerpc/sysdep.c | 3 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/siglist.c | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.S | 3 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.S | 5 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/syscalls.list | 1 | ||||
-rw-r--r-- | version.h | 2 |
25 files changed, 212 insertions, 58 deletions
@@ -1,3 +1,61 @@ +1998-02-02 01:12 Ulrich Drepper <drepper@cygnus.com> + + * libc.map: Add _h_errno. + * inet/herrno.c: Make _h_errno weak alias. + + * login/Makefile (distribute): Add pty-internal.h. + + * nscd/Makefile (distribute): Add all the files missing. + + * signal/allocrtsig.c: Fix problem with recognizing whether RT sigs + are available. + + * stdio-common/tstscanf.c: Rewrite a bit to continue after errors + and report status at the end. + + * sysdeps/unix/sysv/linux/syscalls.list: Add lchown. + + * sysdeps/unix/sysv/linux/i386/sysdep.S: Make errno an initialized + variable. + * sysdeps/unix/sysv/linux/powerpc/sysdep.c: Add alias _errno for errno. + * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.S: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.S: Likewise. + +1998-01-03 20:47 Mark Kettenis <kettenis@phys.uva.nl> + + * configure.in: Fix --enable-add-ons code. + +1998-02-01 Andreas Jaeger <aj@arthur.rhein-neckar.de> + + * elf/rtld.c (dl_main): Allow ":" as separator for LD_PRELOAD. Patch + by Rudolf Leitgeb <leitgeb@leland.stanford.edu>. + [PR libc/441] + + * sysdeps/generic/dl-cache.c (_dl_load_cache_lookup): Use first + occurence in cache. Reported by Rudolf Leitgeb + <leitgeb@leland.stanford.edu>. + [PR libc/440] + +1998-02-01 21:18 Ulrich Drepper <drepper@cygnus.com> + + * libio/iovsscanf.c: Set errno to 0 before calling _IO_vfscanf so + that it never is EINTR (which is tested for in _IO_vfscanf). + + * Makefile.in: Call sub-make with CVSOPTS. + + * elf/Makefile (distribute): Add dl-procinfo.h. + + * sysdeps/unix/sysv/linux/alpha/Dist: Add rt_sigaction.S. + +1998-02-01 15:54 Ulrich Drepper <drepper@cygnus.com> + + * version.h (VERSION): Bump to 2.0.92. + +1998-01-31 Phil Blundell <philb@gnu.org> + + * sysdeps/unix/sysv/linux/siglist.c (_sys_siglist): Additional weak + alias for __new_sys_siglist. + 1998-02-01 00:53 Ulrich Drepper <drepper@cygnus.com> * grp/Makefile: Define USE_NSCD in CFLAGS for getgrnam_r.c and @@ -29,7 +87,7 @@ * nscd/grpcache.c (cache_grpinit): Let calloc do the multiplication. * nscd/pwdcache.c (cache_pwdinit): Use thread attribute to detach - thread and no pthread_detach. + thread and not pthread_detach. * nscd/nscd.c: Rewrite to use argp instead of getopt. diff --git a/Makefile.in b/Makefile.in index 8b921c6905..8c3fe4ad65 100644 --- a/Makefile.in +++ b/Makefile.in @@ -11,4 +11,4 @@ srcdir = @srcdir@ # CVSOPTS = -z9 all .DEFAULT: - $(MAKE) PARALLELMFLAGS="$(PARALLELMFLAGS)" -C $(srcdir) objdir=`pwd` $@ + $(MAKE) PARALLELMFLAGS="$(PARALLELMFLAGS)" CVSOPTS="$(CVSOPTS)" -C $(srcdir) objdir=`pwd` $@ @@ -1,14 +1,17 @@ -This directory contains the version 2.0.91 test release of the GNU C Library. +This directory contains the version 2.0.92 test release of the GNU C Library. Many bugs have been fixed since the last release. Some bugs surely remain. As of this release, the GNU C library is known to run on the following configurations: - i[3456]86-*-gnu GNU Hurd - i[3456]86-*-linux-gnu Linux-2.0 on Intel - m68k-*-linux-gnu Linux-2.0 on Motorola 680x0 - alpha-*-linux-gnu Linux-2.0 on DEC Alpha + *-*-gnu GNU Hurd + i[3456]86-*-linux-gnu Linux-2.x on Intel + m68k-*-linux-gnu Linux-2.x on Motorola 680x0 + alpha-*-linux-gnu Linux-2.x on DEC Alpha + powerpc-*-linux-gnu Linux and MkLinux on PowerPC systems + sparc-*-linux-gnu Linux-2.x on SPARC + sparc64-*-linux-gnu Linux-2.x on UltraSPARC Former releases of this library (version 1.09.1 and perhaps earlier @@ -47,7 +50,7 @@ provides the Unix `crypt' function, plus some other entry points. Because of the United States export restriction on DES implementations, we are distributing this code separately from the rest of the C library. There is an extra distribution tar file just for crypt; it is -called `glibc-crypt-2.0.91.tar.gz'. You can just unpack the crypt +called `glibc-crypt-2.0.92.tar.gz'. You can just unpack the crypt distribution along with the rest of the C library and build; you can also build the library without getting crypt. Users outside the USA can get the crypt distribution via anonymous FTP from ftp.ifi.uio.no @@ -82,7 +85,7 @@ facilities you want it to make available. We prefer to get bug reports sent using the `glibcbug' shell script which is installed together with the rest of the GNU libc to <bugs@gnu.org>. Simply run this shell script and fill in the information. Nevertheless -you can still send bug reports to <bug-glibc@gnu.irg> as normal electronic +you can still send bug reports to <bug-glibc@gnu.org> as normal electronic mails. The GNU C Library is free software. See the file COPYING.LIB for copying @@ -709,7 +709,7 @@ if test "${enable_add_ons+set}" = set; then add_ons=`echo */configure | sed -e 's!/configure!!g'` else add_ons=`echo $srcdir/*/configure | \ - sed -e "s!$srcdir/!!g" -e 's!/configure!!g'` + sed -e 's!/configure!!g' -e "s!$srcdir/!!g"` fi;; *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;; esac diff --git a/configure.in b/configure.in index ce626ca352..04a68809a2 100644 --- a/configure.in +++ b/configure.in @@ -92,7 +92,7 @@ AC_ARG_ENABLE(add-ons, dnl add_ons=`echo */configure | sed -e 's!/configure!!g'` else add_ons=`echo $srcdir/*/configure | \ - sed -e "s!$srcdir/!!g" -e 's!/configure!!g'` + sed -e 's!/configure!!g' -e "s!$srcdir/!!g"` fi;; *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;; esac], diff --git a/elf/Makefile b/elf/Makefile index 685a027834..c49916cec8 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -37,7 +37,7 @@ elide-routines.os = $(dl-routines) dl-support enbl-secure rtld-routines := rtld $(dl-routines) dl-sysdep dl-minimal distribute = $(rtld-routines:=.c) dynamic-link.h do-rel.h dl-machine.h \ dl-hash.h soinit.c sofini.c ldd.sh.in ldd.bash.in eval.c \ - genrtldtbl.awk atomicity.h + genrtldtbl.awk atomicity.h dl-procinfo.h extra-libs = libdl extra-libs-others = $(extra-libs) diff --git a/elf/rtld.c b/elf/rtld.c index aa40d42097..f1b45de1e0 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -489,14 +489,14 @@ of this helper program; chances are you did not intend to run this program.\n", preloadlist = getenv ("LD_PRELOAD"); if (preloadlist) { - /* The LD_PRELOAD environment variable gives a white space - separated list of libraries that are loaded before the + /* The LD_PRELOAD environment variable gives list of libraries + separated by white space or colons that are loaded before the executable's dependencies and prepended to the global scope list. If the binary is running setuid all elements containing a '/' are ignored since it is insecure. */ char *list = strdupa (preloadlist); char *p; - while ((p = strsep (&list, " ")) != NULL) + while ((p = strsep (&list, " :")) != NULL) if (! __libc_enable_secure || strchr (p, '/') == NULL) { struct link_map *new_map = _dl_map_object (NULL, p, lt_library, 0); diff --git a/inet/herrno.c b/inet/herrno.c index f0fd7f7ea5..4eac42ed46 100644 --- a/inet/herrno.c +++ b/inet/herrno.c @@ -1,4 +1,4 @@ -/* 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. The GNU C Library is free software; you can redistribute it and/or @@ -21,6 +21,7 @@ /* We need to have the error status variable of the resolver accessible in the libc. */ int h_errno = 0; +weak_alias (h_errno, _h_errno) /* When threaded, h_errno may be a per-process variable. */ int * @@ -1,7 +1,7 @@ GLIBC_2.0 { global: # global variables - _errno; _itoa_lower_digits; _itoa_upper_digits; + _errno; _h_errno; _itoa_lower_digits; _itoa_upper_digits; __ctype_b; __ctype_tolower; __ctype_toupper; _nl_msg_cat_cntr; __environ; _environ; _res; ___brk_addr; __curbrk; _nl_current_LC_CTYPE; _libc_intl_domainname; diff --git a/libio/iovsscanf.c b/libio/iovsscanf.c index 21600f53ef..0674a4b164 100644 --- a/libio/iovsscanf.c +++ b/libio/iovsscanf.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1993, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1993, 1997, 1998 Free Software Foundation, Inc. This file is part of the GNU IO Library. This library is free software; you can redistribute it and/or @@ -23,6 +23,7 @@ other reasons why the executable file might be covered by the GNU General Public License. */ +#include <errno.h> #include "libioP.h" #include "strfile.h" @@ -43,6 +44,8 @@ _IO_vsscanf (string, format, args) _IO_str_init_static (&sf._sbf._f, (char*)string, 0, NULL); _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, &sf); _IO_flockfile (&sf._sbf._f); + errno = 0; /* Necessary since _IO_vfscanf tests for errno but the + string I/O functions don't set it. */ ret = _IO_vfscanf (&sf._sbf._f, format, args, NULL); _IO_cleanup_region_end (1); return ret; diff --git a/login/Makefile b/login/Makefile index 04c6eeb8a4..ce321cba97 100644 --- a/login/Makefile +++ b/login/Makefile @@ -37,7 +37,8 @@ utmpd-routines := connection database error request xtmp extra-objs := $(utmpd-routines:=.o) distribute := utmp-private.h programs/xtmp.h programs/utmpd.h README.utmpd \ - programs/utmpd-private.h $(utmpd-routines:%=programs/%.c) + programs/utmpd-private.h $(utmpd-routines:%=programs/%.c) \ + pty-internal.h subdir-dirs = programs vpath %.c programs diff --git a/nscd/Makefile b/nscd/Makefile index 4510c4d452..d8df770fa7 100644 --- a/nscd/Makefile +++ b/nscd/Makefile @@ -31,11 +31,12 @@ install-sbin := nscd endif -nscd-routines := nscd connections pwdcache getpwnam_r getpwuid_r grpcache\ +nscd-routines := nscd connections pwdcache getpwnam_r getpwuid_r grpcache \ getgrnam_r getgrgid_r dbg_log nscd_conf nscd_stat extra-objs := $(nscd-routines:=.o) -distribute := nscd.h dbg_log.h +distribute := nscd.h dbg_log.h $(nscd-routines:=.c) TODO nscd.conf nscd.init \ + nscd_proto.h include ../Rules diff --git a/nss/getXXbyYY_r.c b/nss/getXXbyYY_r.c index d20fa34498..a4dc0011a2 100644 --- a/nss/getXXbyYY_r.c +++ b/nss/getXXbyYY_r.c @@ -152,6 +152,18 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer, status = (*fct) (ADD_VARIABLES, resbuf, buffer, buflen, __errno_location () H_ERRNO_VAR); + /* The the status is NSS_STATUS_TRYAGAIN and errno is ERANGE the + provided buffer is too small. In this case we should give + the user the possibility to enlarge the buffer and we should + not simply go on with the next service (even if the TRYAGAIN + action tells us so). */ + if (status == NSS_STATUS_TRYAGAIN +#ifdef NEED_H_ERRNO + && *h_errnop == NETDB_INTERNAL +#endif + && errno == ERANGE) + break; + no_more = __nss_next (&nip, REENTRANT_NAME_STRING, (void **) &fct, status, 0); } diff --git a/nss/getXXent_r.c b/nss/getXXent_r.c index 1884b0773d..aa21b6fe7c 100644 --- a/nss/getXXent_r.c +++ b/nss/getXXent_r.c @@ -1,4 +1,4 @@ -/* 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 Ulrich Drepper <drepper@cygnus.com>, 1996. @@ -249,6 +249,18 @@ INTERNAL (REENTRANT_GETNAME) (LOOKUP_TYPE *resbuf, char *buffer, size_t buflen, status = (*fct) (resbuf, buffer, buflen, __errno_location () H_ERRNO_VAR); + /* The the status is NSS_STATUS_TRYAGAIN and errno is ERANGE the + provided buffer is too small. In this case we should give + the user the possibility to enlarge the buffer and we should + not simply go on with the next service (even if the TRYAGAIN + action tells us so). */ + if (status == NSS_STATUS_TRYAGAIN +#ifdef NEED_H_ERRNO + && *h_errnop == NETDB_INTERNAL +#endif + && errno == ERANGE) + break; + no_more = __nss_next (&nip, GETFUNC_NAME_STRING, (void **) &fct, status, 0); diff --git a/signal/allocrtsig.c b/signal/allocrtsig.c index 678bc8b17b..e1dde79b66 100644 --- a/signal/allocrtsig.c +++ b/signal/allocrtsig.c @@ -1,5 +1,5 @@ /* Handle real-time signal allocation. - 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. @@ -80,7 +80,7 @@ __libc_allocate_rtsig (int high) #else if (!initialized) init (); - if (current_rtmin != -1 || current_rtmin > current_rtmax) + if (current_rtmin == -1 || current_rtmin > current_rtmax) /* We don't have anymore signal available. */ return -1; diff --git a/stdio-common/tstscanf.c b/stdio-common/tstscanf.c index d0ff6c8b41..3e6e496e4f 100644 --- a/stdio-common/tstscanf.c +++ b/stdio-common/tstscanf.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1992, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1991, 1992, 1996, 1997, 1998 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 @@ -31,15 +31,19 @@ main (int argc, char **argv) char buf[BUFSIZ]; FILE *in = stdin, *out = stdout; int x; + int result = 0; if (sscanf ("0", "%d", &x) != 1) - exit (EXIT_FAILURE); + { + fputs ("test failed!\n", stdout); + result = 1; + } sscanf ("conversion] Zero flag Ze]ro#\n", "%*[^]] %[^#]\n", buf); if (strcmp (buf, "] Zero flag Ze]ro") != 0) { - fputs ("test failed!\n", stderr); - return 1; + fputs ("test failed!\n", stdout); + result = 1; } if (argc == 2 && !strcmp (argv[1], "-opipe")) @@ -48,13 +52,18 @@ main (int argc, char **argv) if (out == NULL) { perror ("popen: /bin/cat"); - exit (EXIT_FAILURE); + result = 1; } } else if (argc == 3 && !strcmp (argv[1], "-ipipe")) { sprintf (buf, "/bin/cat %s", argv[2]); in = popen (buf, "r"); + if (in == NULL) + { + perror ("popen: /bin/cat"); + result = 1; + } } { @@ -64,7 +73,10 @@ main (int argc, char **argv) sscanf ("thompson", "%s", name), name); if (strcmp (name, "thompson") != 0) - return 1; + { + fputs ("test failed!\n", stdout); + result = 1; + } } fputs ("Testing scanf (vfscanf)\n", out); @@ -78,11 +90,17 @@ main (int argc, char **argv) fprintf (out, "n = %d, i = %d, x = %f, name = \"%.50s\"\n", n, i, x, name); if (n != 3 || i != 25 || x != 5.432F || strcmp (name, "thompson")) - return 1; + { + fputs ("test failed!\n", stdout); + result = 1; + } } fprintf (out, "Residual: \"%s\"\n", fgets (buf, sizeof (buf), in)); if (strcmp (buf, "\n")) - return 1; + { + fputs ("test failed!\n", stdout); + result = 1; + } fputs ("Test 2:\n", out); { int i; @@ -90,12 +108,18 @@ main (int argc, char **argv) char name[50]; (void) fscanf (in, "%2d%f%*d %[0123456789]", &i, &x, name); fprintf (out, "i = %d, x = %f, name = \"%.50s\"\n", i, x, name); - if (i != 56 || x != 789.0F || strcmp(name, "56")) - return 1; + if (i != 56 || x != 789.0F || strcmp (name, "56")) + { + fputs ("test failed!\n", stdout); + result = 1; + } } fprintf (out, "Residual: \"%s\"\n", fgets (buf, sizeof (buf), in)); if (strcmp (buf, "a72\n")) - return 1; + { + fputs ("test failed!\n", stdout); + result = 1; + } fputs ("Test 3:\n", out); { static struct { @@ -118,7 +142,10 @@ main (int argc, char **argv) int count; if (rounds++ >= sizeof (ok) / sizeof (ok[0])) - return 1; + { + fputs ("test failed!\n", stdout); + result = 1; + } quant = 0.0; units[0] = item[0] = '\0'; @@ -129,28 +156,37 @@ main (int argc, char **argv) if (count != ok[rounds-1].count || quant != ok[rounds-1].quant || strcmp (item, ok[rounds-1].item) || strcmp (units, ok[rounds-1].units)) - return 1; + { + fputs ("test failed!\n", stdout); + result = 1; + } } } buf[0] = '\0'; fprintf (out, "Residual: \"%s\"\n", fgets (buf, sizeof (buf), in)); if (strcmp (buf, "")) - return 1; + { + fputs ("test failed!\n", stdout); + result = 1; + } if (out != stdout) pclose (out); - fputs ("Test 3:\n", out); + fputs ("Test 4:\n", out); { int res, val, n; res = sscanf ("-242", "%3o%n", &val, &n); printf ("res = %d, val = %d, n = %d\n", res, val, n); if (res != 1 || val != -20 || n != 3) - return 1; + { + fputs ("test failed!\n", stdout); + result = 1; + } } - fputs ("Test 4:\n", out); + fputs ("Test 5:\n", out); { double a = 0, b = 0; int res, n; @@ -159,20 +195,29 @@ main (int argc, char **argv) printf ("res = %d, a = %g, b = %g, n = %d\n", res, a, b, n); if (res != 2 || a != 123 || b != 456 || n != 6) - return 1; + { + fputs ("test failed!\n", stdout); + result = 1; + } res = sscanf ("0", "%lg", &a); printf ("res = %d, a = %g\n", res, a); if (res != 1 || a != 0) - exit (EXIT_FAILURE); + { + fputs ("test failed!\n", stdout); + result = 1; + } res = sscanf ("1e3", "%lg%n", &a, &n); printf ("res = %d, a = %g, n = %d\n", res, a, n); if (res != 1 || a != 1000 || n != 3) - exit (EXIT_FAILURE); + { + fputs ("test failed!\n", stdout); + result = 1; + } } - exit(EXIT_SUCCESS); + exit (result); } diff --git a/sysdeps/generic/dl-cache.c b/sysdeps/generic/dl-cache.c index 36d6c707d3..8eb18b79cc 100644 --- a/sysdeps/generic/dl-cache.c +++ b/sysdeps/generic/dl-cache.c @@ -1,5 +1,5 @@ /* Support for reading /etc/ld.so.cache files written by Linux ldconfig. - 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. The GNU C Library is free software; you can redistribute it and/or @@ -88,13 +88,16 @@ _dl_load_cache_lookup (const char *name) ! strcmp (name, ((const char *) &cache->libs[cache->nlibs] + cache->libs[i].key))) { - best = ((const char *) &cache->libs[cache->nlibs] - + cache->libs[i].value); + if ((best == NULL) || (cache->libs[i].flags == 3)) + { + best = ((const char *) &cache->libs[cache->nlibs] + + cache->libs[i].value); - if (cache->libs[i].flags == 3) - /* We've found an exact match for the shared object and no - general `ELF' release. Stop searching. */ - break; + if (cache->libs[i].flags == 3) + /* We've found an exact match for the shared object and no + general `ELF' release. Stop searching. */ + break; + } } return best; } diff --git a/sysdeps/unix/sysv/linux/alpha/Dist b/sysdeps/unix/sysv/linux/alpha/Dist index 5b5dca44da..c8149ca0de 100644 --- a/sysdeps/unix/sysv/linux/alpha/Dist +++ b/sysdeps/unix/sysv/linux/alpha/Dist @@ -10,6 +10,7 @@ kernel_sigaction.h kernel_stat.h kernel_termios.h net/route.h +rt_sigaction.S sys/acct.h sys/io.h sys/procfs.h diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.S b/sysdeps/unix/sysv/linux/i386/sysdep.S index 5a615efecb..f7eac4d225 100644 --- a/sysdeps/unix/sysv/linux/i386/sysdep.S +++ b/sysdeps/unix/sysv/linux/i386/sysdep.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996, 1997, 1998 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 @@ -25,8 +25,12 @@ it somewhere else. ...and this place is here. */ - .comm errno,4,4 -_errno = errno /* This name is expected by hj's libc.so.5 startup code. */ + .data + .globl errno +errno: + .globl _errno +_errno: + .long 4 /* The following code is only used in the shared library when we compile the reentrant version. Otherwise each system call defines @@ -41,6 +45,7 @@ _errno = errno /* This name is expected by hj's libc.so.5 startup code. */ #undef CALL_MCOUNT #define CALL_MCOUNT /* Don't insert the profiling call, it clobbers %eax. */ + .text ENTRY (__syscall_error) negl %eax diff --git a/sysdeps/unix/sysv/linux/powerpc/sysdep.c b/sysdeps/unix/sysv/linux/powerpc/sysdep.c index 3896111005..0559cc7065 100644 --- a/sysdeps/unix/sysv/linux/powerpc/sysdep.c +++ b/sysdeps/unix/sysv/linux/powerpc/sysdep.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998 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 @@ -31,3 +31,4 @@ __syscall_error (int err_no) /* We also have to have a 'real' definition of errno. */ #undef errno int errno = 0; +weak_alias (errno, _errno) diff --git a/sysdeps/unix/sysv/linux/siglist.c b/sysdeps/unix/sysv/linux/siglist.c index 520bd8f2a0..a10b273db0 100644 --- a/sysdeps/unix/sysv/linux/siglist.c +++ b/sysdeps/unix/sysv/linux/siglist.c @@ -39,6 +39,7 @@ default_symbol_version (__new_sys_siglist, _sys_siglist, GLIBC_2.1); default_symbol_version (_new_sys_siglist, sys_siglist, GLIBC_2.1); default_symbol_version (__new_sys_sigabbrev, sys_sigabbrev, GLIBC_2.1); #else +weak_alias(__new_sys_siglist, _sys_siglist) weak_alias(__new_sys_siglist, sys_siglist) weak_alias(__new_sys_sigabbrev, sys_sigabbrev) #endif diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.S b/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.S index 7e9023901b..8b0a130106 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.S @@ -1,3 +1,6 @@ /* Define errno */ .common errno,4,4 + + .globl _errno +_errno = errno diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.S b/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.S index 736578083c..97adfdf219 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.S @@ -1,4 +1,4 @@ -/* 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 Richard Henderson <richard@gnu.ai.mit.edu>, 1997. @@ -29,3 +29,6 @@ errno: .space 4 .globl __errno __errno = errno + + .globl _errno +_errno = errno diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list index 16538cee73..3f1491f7bd 100644 --- a/sysdeps/unix/sysv/linux/syscalls.list +++ b/sysdeps/unix/sysv/linux/syscalls.list @@ -21,6 +21,7 @@ ioperm - ioperm 3 ioperm iopl - iopl 1 iopl ipc msgget ipc 5 __ipc klogctl EXTRA syslog 3 klogctl +lchown EXATR lchown 3 __lchown lchown mlock EXTRA mlock 2 __mlock mlock mlockall EXTRA mlockall 1 __mlockall mlockall mount EXTRA mount 5 __mount mount @@ -1,4 +1,4 @@ /* This file just defines the current version number of libc. */ #define RELEASE "experimental" -#define VERSION "2.0.91" +#define VERSION "2.0.92" |