1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00
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.
This commit is contained in:
Ulrich Drepper
1998-02-01 17:06:45 +00:00
parent 6a844df675
commit 566efee219
25 changed files with 212 additions and 58 deletions

View File

@ -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> 1998-02-01 00:53 Ulrich Drepper <drepper@cygnus.com>
* grp/Makefile: Define USE_NSCD in CFLAGS for getgrnam_r.c and * 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/grpcache.c (cache_grpinit): Let calloc do the multiplication.
* nscd/pwdcache.c (cache_pwdinit): Use thread attribute to detach * 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. * nscd/nscd.c: Rewrite to use argp instead of getopt.

View File

@ -11,4 +11,4 @@ srcdir = @srcdir@
# CVSOPTS = -z9 # CVSOPTS = -z9
all .DEFAULT: all .DEFAULT:
$(MAKE) PARALLELMFLAGS="$(PARALLELMFLAGS)" -C $(srcdir) objdir=`pwd` $@ $(MAKE) PARALLELMFLAGS="$(PARALLELMFLAGS)" CVSOPTS="$(CVSOPTS)" -C $(srcdir) objdir=`pwd` $@

17
README
View File

@ -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. Many bugs have been fixed since the last release.
Some bugs surely remain. Some bugs surely remain.
As of this release, the GNU C library is known to run on the following As of this release, the GNU C library is known to run on the following
configurations: configurations:
i[3456]86-*-gnu GNU Hurd *-*-gnu GNU Hurd
i[3456]86-*-linux-gnu Linux-2.0 on Intel i[3456]86-*-linux-gnu Linux-2.x on Intel
m68k-*-linux-gnu Linux-2.0 on Motorola 680x0 m68k-*-linux-gnu Linux-2.x on Motorola 680x0
alpha-*-linux-gnu Linux-2.0 on DEC Alpha 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 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, Because of the United States export restriction on DES implementations,
we are distributing this code separately from the rest of the C 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 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 distribution along with the rest of the C library and build; you can
also build the library without getting crypt. Users outside the USA also build the library without getting crypt. Users outside the USA
can get the crypt distribution via anonymous FTP from ftp.ifi.uio.no 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 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>. 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 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. mails.
The GNU C Library is free software. See the file COPYING.LIB for copying The GNU C Library is free software. See the file COPYING.LIB for copying

2
configure vendored
View File

@ -709,7 +709,7 @@ if test "${enable_add_ons+set}" = set; then
add_ons=`echo */configure | sed -e 's!/configure!!g'` add_ons=`echo */configure | sed -e 's!/configure!!g'`
else else
add_ons=`echo $srcdir/*/configure | \ add_ons=`echo $srcdir/*/configure | \
sed -e "s!$srcdir/!!g" -e 's!/configure!!g'` sed -e 's!/configure!!g' -e "s!$srcdir/!!g"`
fi;; fi;;
*) add_ons=`echo "$enableval" | sed 's/,/ /g'`;; *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;;
esac esac

View File

@ -92,7 +92,7 @@ AC_ARG_ENABLE(add-ons, dnl
add_ons=`echo */configure | sed -e 's!/configure!!g'` add_ons=`echo */configure | sed -e 's!/configure!!g'`
else else
add_ons=`echo $srcdir/*/configure | \ add_ons=`echo $srcdir/*/configure | \
sed -e "s!$srcdir/!!g" -e 's!/configure!!g'` sed -e 's!/configure!!g' -e "s!$srcdir/!!g"`
fi;; fi;;
*) add_ons=`echo "$enableval" | sed 's/,/ /g'`;; *) add_ons=`echo "$enableval" | sed 's/,/ /g'`;;
esac], esac],

View File

@ -37,7 +37,7 @@ elide-routines.os = $(dl-routines) dl-support enbl-secure
rtld-routines := rtld $(dl-routines) dl-sysdep dl-minimal rtld-routines := rtld $(dl-routines) dl-sysdep dl-minimal
distribute = $(rtld-routines:=.c) dynamic-link.h do-rel.h dl-machine.h \ 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 \ 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 = libdl
extra-libs-others = $(extra-libs) extra-libs-others = $(extra-libs)

View File

@ -489,14 +489,14 @@ of this helper program; chances are you did not intend to run this program.\n",
preloadlist = getenv ("LD_PRELOAD"); preloadlist = getenv ("LD_PRELOAD");
if (preloadlist) if (preloadlist)
{ {
/* The LD_PRELOAD environment variable gives a white space /* The LD_PRELOAD environment variable gives list of libraries
separated list of libraries that are loaded before the separated by white space or colons that are loaded before the
executable's dependencies and prepended to the global scope executable's dependencies and prepended to the global scope
list. If the binary is running setuid all elements list. If the binary is running setuid all elements
containing a '/' are ignored since it is insecure. */ containing a '/' are ignored since it is insecure. */
char *list = strdupa (preloadlist); char *list = strdupa (preloadlist);
char *p; char *p;
while ((p = strsep (&list, " ")) != NULL) while ((p = strsep (&list, " :")) != NULL)
if (! __libc_enable_secure || strchr (p, '/') == NULL) if (! __libc_enable_secure || strchr (p, '/') == NULL)
{ {
struct link_map *new_map = _dl_map_object (NULL, p, lt_library, 0); struct link_map *new_map = _dl_map_object (NULL, p, lt_library, 0);

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or 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 /* We need to have the error status variable of the resolver
accessible in the libc. */ accessible in the libc. */
int h_errno = 0; int h_errno = 0;
weak_alias (h_errno, _h_errno)
/* When threaded, h_errno may be a per-process variable. */ /* When threaded, h_errno may be a per-process variable. */
int * int *

View File

@ -1,7 +1,7 @@
GLIBC_2.0 { GLIBC_2.0 {
global: global:
# global variables # global variables
_errno; _itoa_lower_digits; _itoa_upper_digits; _errno; _h_errno; _itoa_lower_digits; _itoa_upper_digits;
__ctype_b; __ctype_tolower; __ctype_toupper; __ctype_b; __ctype_tolower; __ctype_toupper;
_nl_msg_cat_cntr; __environ; _environ; _res; _nl_msg_cat_cntr; __environ; _environ; _res;
___brk_addr; __curbrk; _nl_current_LC_CTYPE; _libc_intl_domainname; ___brk_addr; __curbrk; _nl_current_LC_CTYPE; _libc_intl_domainname;

View File

@ -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 file is part of the GNU IO Library.
This library is free software; you can redistribute it and/or 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 other reasons why the executable file might be covered by the GNU
General Public License. */ General Public License. */
#include <errno.h>
#include "libioP.h" #include "libioP.h"
#include "strfile.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_str_init_static (&sf._sbf._f, (char*)string, 0, NULL);
_IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, &sf); _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, &sf);
_IO_flockfile (&sf._sbf._f); _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); ret = _IO_vfscanf (&sf._sbf._f, format, args, NULL);
_IO_cleanup_region_end (1); _IO_cleanup_region_end (1);
return ret; return ret;

View File

@ -37,7 +37,8 @@ utmpd-routines := connection database error request xtmp
extra-objs := $(utmpd-routines:=.o) extra-objs := $(utmpd-routines:=.o)
distribute := utmp-private.h programs/xtmp.h programs/utmpd.h README.utmpd \ 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 subdir-dirs = programs
vpath %.c programs vpath %.c programs

View File

@ -31,11 +31,12 @@ install-sbin := nscd
endif 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 getgrnam_r getgrgid_r dbg_log nscd_conf nscd_stat
extra-objs := $(nscd-routines:=.o) 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 include ../Rules

View File

@ -152,6 +152,18 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer,
status = (*fct) (ADD_VARIABLES, resbuf, buffer, buflen, status = (*fct) (ADD_VARIABLES, resbuf, buffer, buflen,
__errno_location () H_ERRNO_VAR); __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, no_more = __nss_next (&nip, REENTRANT_NAME_STRING,
(void **) &fct, status, 0); (void **) &fct, status, 0);
} }

View File

@ -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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. 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 () status = (*fct) (resbuf, buffer, buflen, __errno_location ()
H_ERRNO_VAR); 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, no_more = __nss_next (&nip, GETFUNC_NAME_STRING, (void **) &fct,
status, 0); status, 0);

View File

@ -1,5 +1,5 @@
/* Handle real-time signal allocation. /* 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. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@ -80,7 +80,7 @@ __libc_allocate_rtsig (int high)
#else #else
if (!initialized) if (!initialized)
init (); init ();
if (current_rtmin != -1 || current_rtmin > current_rtmax) if (current_rtmin == -1 || current_rtmin > current_rtmax)
/* We don't have anymore signal available. */ /* We don't have anymore signal available. */
return -1; return -1;

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or 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]; char buf[BUFSIZ];
FILE *in = stdin, *out = stdout; FILE *in = stdin, *out = stdout;
int x; int x;
int result = 0;
if (sscanf ("0", "%d", &x) != 1) 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); sscanf ("conversion] Zero flag Ze]ro#\n", "%*[^]] %[^#]\n", buf);
if (strcmp (buf, "] Zero flag Ze]ro") != 0) if (strcmp (buf, "] Zero flag Ze]ro") != 0)
{ {
fputs ("test failed!\n", stderr); fputs ("test failed!\n", stdout);
return 1; result = 1;
} }
if (argc == 2 && !strcmp (argv[1], "-opipe")) if (argc == 2 && !strcmp (argv[1], "-opipe"))
@ -48,13 +52,18 @@ main (int argc, char **argv)
if (out == NULL) if (out == NULL)
{ {
perror ("popen: /bin/cat"); perror ("popen: /bin/cat");
exit (EXIT_FAILURE); result = 1;
} }
} }
else if (argc == 3 && !strcmp (argv[1], "-ipipe")) else if (argc == 3 && !strcmp (argv[1], "-ipipe"))
{ {
sprintf (buf, "/bin/cat %s", argv[2]); sprintf (buf, "/bin/cat %s", argv[2]);
in = popen (buf, "r"); 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), sscanf ("thompson", "%s", name),
name); name);
if (strcmp (name, "thompson") != 0) if (strcmp (name, "thompson") != 0)
return 1; {
fputs ("test failed!\n", stdout);
result = 1;
}
} }
fputs ("Testing scanf (vfscanf)\n", out); 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", fprintf (out, "n = %d, i = %d, x = %f, name = \"%.50s\"\n",
n, i, x, name); n, i, x, name);
if (n != 3 || i != 25 || x != 5.432F || strcmp (name, "thompson")) 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)); fprintf (out, "Residual: \"%s\"\n", fgets (buf, sizeof (buf), in));
if (strcmp (buf, "\n")) if (strcmp (buf, "\n"))
return 1; {
fputs ("test failed!\n", stdout);
result = 1;
}
fputs ("Test 2:\n", out); fputs ("Test 2:\n", out);
{ {
int i; int i;
@ -90,12 +108,18 @@ main (int argc, char **argv)
char name[50]; char name[50];
(void) fscanf (in, "%2d%f%*d %[0123456789]", &i, &x, name); (void) fscanf (in, "%2d%f%*d %[0123456789]", &i, &x, name);
fprintf (out, "i = %d, x = %f, name = \"%.50s\"\n", i, x, name); fprintf (out, "i = %d, x = %f, name = \"%.50s\"\n", i, x, name);
if (i != 56 || x != 789.0F || strcmp(name, "56")) if (i != 56 || x != 789.0F || strcmp (name, "56"))
return 1; {
fputs ("test failed!\n", stdout);
result = 1;
}
} }
fprintf (out, "Residual: \"%s\"\n", fgets (buf, sizeof (buf), in)); fprintf (out, "Residual: \"%s\"\n", fgets (buf, sizeof (buf), in));
if (strcmp (buf, "a72\n")) if (strcmp (buf, "a72\n"))
return 1; {
fputs ("test failed!\n", stdout);
result = 1;
}
fputs ("Test 3:\n", out); fputs ("Test 3:\n", out);
{ {
static struct { static struct {
@ -118,7 +142,10 @@ main (int argc, char **argv)
int count; int count;
if (rounds++ >= sizeof (ok) / sizeof (ok[0])) if (rounds++ >= sizeof (ok) / sizeof (ok[0]))
return 1; {
fputs ("test failed!\n", stdout);
result = 1;
}
quant = 0.0; quant = 0.0;
units[0] = item[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 if (count != ok[rounds-1].count || quant != ok[rounds-1].quant
|| strcmp (item, ok[rounds-1].item) || strcmp (item, ok[rounds-1].item)
|| strcmp (units, ok[rounds-1].units)) || strcmp (units, ok[rounds-1].units))
return 1; {
fputs ("test failed!\n", stdout);
result = 1;
}
} }
} }
buf[0] = '\0'; buf[0] = '\0';
fprintf (out, "Residual: \"%s\"\n", fgets (buf, sizeof (buf), in)); fprintf (out, "Residual: \"%s\"\n", fgets (buf, sizeof (buf), in));
if (strcmp (buf, "")) if (strcmp (buf, ""))
return 1; {
fputs ("test failed!\n", stdout);
result = 1;
}
if (out != stdout) if (out != stdout)
pclose (out); pclose (out);
fputs ("Test 3:\n", out); fputs ("Test 4:\n", out);
{ {
int res, val, n; int res, val, n;
res = sscanf ("-242", "%3o%n", &val, &n); res = sscanf ("-242", "%3o%n", &val, &n);
printf ("res = %d, val = %d, n = %d\n", res, val, n); printf ("res = %d, val = %d, n = %d\n", res, val, n);
if (res != 1 || val != -20 || n != 3) 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; double a = 0, b = 0;
int res, n; 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); printf ("res = %d, a = %g, b = %g, n = %d\n", res, a, b, n);
if (res != 2 || a != 123 || b != 456 || n != 6) if (res != 2 || a != 123 || b != 456 || n != 6)
return 1; {
fputs ("test failed!\n", stdout);
result = 1;
}
res = sscanf ("0", "%lg", &a); res = sscanf ("0", "%lg", &a);
printf ("res = %d, a = %g\n", res, a); printf ("res = %d, a = %g\n", res, a);
if (res != 1 || a != 0) if (res != 1 || a != 0)
exit (EXIT_FAILURE); {
fputs ("test failed!\n", stdout);
result = 1;
}
res = sscanf ("1e3", "%lg%n", &a, &n); res = sscanf ("1e3", "%lg%n", &a, &n);
printf ("res = %d, a = %g, n = %d\n", res, a, n); printf ("res = %d, a = %g, n = %d\n", res, a, n);
if (res != 1 || a != 1000 || n != 3) if (res != 1 || a != 1000 || n != 3)
exit (EXIT_FAILURE); {
fputs ("test failed!\n", stdout);
result = 1;
}
} }
exit(EXIT_SUCCESS); exit (result);
} }

View File

@ -1,5 +1,5 @@
/* Support for reading /etc/ld.so.cache files written by Linux ldconfig. /* 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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or 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] + ! strcmp (name, ((const char *) &cache->libs[cache->nlibs] +
cache->libs[i].key))) cache->libs[i].key)))
{ {
best = ((const char *) &cache->libs[cache->nlibs] if ((best == NULL) || (cache->libs[i].flags == 3))
+ cache->libs[i].value); {
best = ((const char *) &cache->libs[cache->nlibs]
+ cache->libs[i].value);
if (cache->libs[i].flags == 3) if (cache->libs[i].flags == 3)
/* We've found an exact match for the shared object and no /* We've found an exact match for the shared object and no
general `ELF' release. Stop searching. */ general `ELF' release. Stop searching. */
break; break;
}
} }
return best; return best;
} }

View File

@ -10,6 +10,7 @@ kernel_sigaction.h
kernel_stat.h kernel_stat.h
kernel_termios.h kernel_termios.h
net/route.h net/route.h
rt_sigaction.S
sys/acct.h sys/acct.h
sys/io.h sys/io.h
sys/procfs.h sys/procfs.h

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -25,8 +25,12 @@
it somewhere else. it somewhere else.
...and this place is here. */ ...and this place is here. */
.comm errno,4,4 .data
_errno = errno /* This name is expected by hj's libc.so.5 startup code. */ .globl errno
errno:
.globl _errno
_errno:
.long 4
/* The following code is only used in the shared library when we /* The following code is only used in the shared library when we
compile the reentrant version. Otherwise each system call defines 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 #undef CALL_MCOUNT
#define CALL_MCOUNT /* Don't insert the profiling call, it clobbers %eax. */ #define CALL_MCOUNT /* Don't insert the profiling call, it clobbers %eax. */
.text
ENTRY (__syscall_error) ENTRY (__syscall_error)
negl %eax negl %eax

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or 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. */ /* We also have to have a 'real' definition of errno. */
#undef errno #undef errno
int errno = 0; int errno = 0;
weak_alias (errno, _errno)

View File

@ -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_siglist, sys_siglist, GLIBC_2.1);
default_symbol_version (__new_sys_sigabbrev, sys_sigabbrev, GLIBC_2.1); default_symbol_version (__new_sys_sigabbrev, sys_sigabbrev, GLIBC_2.1);
#else #else
weak_alias(__new_sys_siglist, _sys_siglist)
weak_alias(__new_sys_siglist, sys_siglist) weak_alias(__new_sys_siglist, sys_siglist)
weak_alias(__new_sys_sigabbrev, sys_sigabbrev) weak_alias(__new_sys_sigabbrev, sys_sigabbrev)
#endif #endif

View File

@ -1,3 +1,6 @@
/* Define errno */ /* Define errno */
.common errno,4,4 .common errno,4,4
.globl _errno
_errno = errno

View File

@ -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. This file is part of the GNU C Library.
Contributed by Richard Henderson <richard@gnu.ai.mit.edu>, 1997. Contributed by Richard Henderson <richard@gnu.ai.mit.edu>, 1997.
@ -29,3 +29,6 @@ errno: .space 4
.globl __errno .globl __errno
__errno = errno __errno = errno
.globl _errno
_errno = errno

View File

@ -21,6 +21,7 @@ ioperm - ioperm 3 ioperm
iopl - iopl 1 iopl iopl - iopl 1 iopl
ipc msgget ipc 5 __ipc ipc msgget ipc 5 __ipc
klogctl EXTRA syslog 3 klogctl klogctl EXTRA syslog 3 klogctl
lchown EXATR lchown 3 __lchown lchown
mlock EXTRA mlock 2 __mlock mlock mlock EXTRA mlock 2 __mlock mlock
mlockall EXTRA mlockall 1 __mlockall mlockall mlockall EXTRA mlockall 1 __mlockall mlockall
mount EXTRA mount 5 __mount mount mount EXTRA mount 5 __mount mount

View File

@ -1,4 +1,4 @@
/* This file just defines the current version number of libc. */ /* This file just defines the current version number of libc. */
#define RELEASE "experimental" #define RELEASE "experimental"
#define VERSION "2.0.91" #define VERSION "2.0.92"