+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
* 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.
# CVSOPTS = -z9
all .DEFAULT:
- $(MAKE) PARALLELMFLAGS="$(PARALLELMFLAGS)" -C $(srcdir) objdir=`pwd` $@
+ $(MAKE) PARALLELMFLAGS="$(PARALLELMFLAGS)" CVSOPTS="$(CVSOPTS)" -C $(srcdir) objdir=`pwd` $@
-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
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
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
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
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],
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)
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);
-/* 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
/* 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 *
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;
-/* 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
other reasons why the executable file might be covered by the GNU
General Public License. */
+#include <errno.h>
#include "libioP.h"
#include "strfile.h"
_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;
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
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
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);
}
-/* 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.
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);
/* 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.
#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;
-/* 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
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"))
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;
+ }
}
{
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);
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;
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 {
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';
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;
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);
}
/* 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
! 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;
}
kernel_stat.h
kernel_termios.h
net/route.h
+rt_sigaction.S
sys/acct.h
sys/io.h
sys/procfs.h
-/* 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
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
#undef CALL_MCOUNT
#define CALL_MCOUNT /* Don't insert the profiling call, it clobbers %eax. */
+ .text
ENTRY (__syscall_error)
negl %eax
-/* 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
/* We also have to have a 'real' definition of errno. */
#undef errno
int errno = 0;
+weak_alias (errno, _errno)
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
/* Define errno */
.common errno,4,4
+
+ .globl _errno
+_errno = errno
-/* 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.
.globl __errno
__errno = errno
+
+ .globl _errno
+_errno = errno
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
/* This file just defines the current version number of libc. */
#define RELEASE "experimental"
-#define VERSION "2.0.91"
+#define VERSION "2.0.92"