aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog55
-rw-r--r--Makefile4
-rw-r--r--bits/poll.h38
-rw-r--r--catgets/catgets.c6
-rw-r--r--catgets/catgetsinfo.h7
-rw-r--r--catgets/gencat.c4
-rw-r--r--catgets/open_catalog.c28
-rw-r--r--csu/Makefile1
-rw-r--r--io/Makefile2
-rw-r--r--io/sys/poll.h25
-rw-r--r--libio/fileops.c29
-rw-r--r--localedata/CHECKSUMS8
-rw-r--r--localedata/Makefile7
-rw-r--r--localedata/README12
-rw-r--r--localedata/fmon-de_DE.exp30
-rw-r--r--localedata/fmon-en_US.exp30
-rw-r--r--localedata/locales/cs_CZ112
-rw-r--r--localedata/sort-test.sh2
-rw-r--r--localedata/tst-fmon.c65
-rwxr-xr-xlocaledata/tst-fmon.sh32
-rw-r--r--malloc/obstack.c10
-rw-r--r--nss/Makefile2
-rw-r--r--sysdeps/generic/bits/poll.h38
-rw-r--r--sysdeps/generic/dl-sysdep.c27
-rw-r--r--sysdeps/powerpc/e_sqrt.c142
-rw-r--r--sysdeps/powerpc/e_sqrtf.c137
-rw-r--r--sysdeps/powerpc/s_copysignf.S1
-rw-r--r--sysdeps/powerpc/s_fabsf.S1
-rw-r--r--sysdeps/powerpc/s_isnanf.S1
-rw-r--r--sysdeps/powerpc/w_sqrt.c141
-rw-r--r--sysdeps/powerpc/w_sqrtf.c136
-rw-r--r--sysdeps/unix/sysv/linux/bits/poll.h48
-rw-r--r--sysdeps/unix/sysv/linux/m68k/bits/poll.h43
-rw-r--r--sysdeps/unix/sysv/linux/mips/bits/poll.h48
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c154
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/poll.h43
36 files changed, 906 insertions, 563 deletions
diff --git a/ChangeLog b/ChangeLog
index 95dde68ad9..86a662f7ff 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,58 @@
+1997-08-29 02:36 Ulrich Drepper <drepper@cygnus.com>
+
+ * Makefile (version-info.h): Use ISO form for the date.
+
+ * catgets/catgetsinfo.h: Include <bits/libc-lock.h>.
+ (struct catalog_obj): Add lock field.
+ (__open_catalog): Remove second parameter from prototype.
+ * catgets/catgets.c (catopen): Initialize lock field.
+ (catgets): Don't pass second parameter to __open_catalog.
+ * catgets/gencat.c: Initialize lock field and don't pass second
+ parameter to __open_catalog.
+ * catgets/open_catalog.c (__open_catalog): Decide about use of
+ path by examining path in struct, not based on extra argument.
+ Acquire a the lock before trying to load the catalog and release
+ it before returning.
+
+ * csu/Makefile (abi-tag.h): Make sure target directory exists.
+
+ * io/Makefile (headers): Add bits/poll.h.
+ * io/sys/poll.h: Remove definitions of POLL* constants.
+ Include <bits/poll.h>.
+ * sysdeps/generic/bits/poll.h: New file.
+ * sysdeps/unix/sysv/linux/bits/poll.h: New file.
+ * sysdeps/unix/sysv/linux/m68k/bits/poll.h: New file.
+ * sysdeps/unix/sysv/linux/mips/bits/poll.h: New file.
+ * sysdeps/unix/sysv/linux/sparc/bits/poll.h: New file.
+
+ * libio/fileops.c (_IO_file_read, _IO_file_write): Remove dead code.
+
+ * malloc/obstack.c: Add casts to keep very verbose compilers on
+ 64bit machine quiet.
+
+ * nss/Makefile (libnss_db.so): Find libdb.so in db2 directory.
+
+1997-08-28 17:30 Ulrich Drepper <drepper@cygnus.com>
+
+ * catgets/catgets.c (catopen): Correctly determine length of string
+ in NLSPATH evironment variable. Patch by HJ Lu <hjl@gnu.ai.mit.edu>.
+
+1997-08-27 23:19 Richard Henderson <rth@cygnus.com>
+
+ * sysdeps/generic/dl-sysdep.c (DL_FIND_ARG_COMPONENTS): Provide
+ default macro to track down arguments from stack start.
+ (_dl_sysdep_start): Use it.
+ * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c: Truncate to simply
+ providing a special DL_FIND_ARG_COMPONENTS and including the next
+ file up the line.
+
+ * sysdeps/powerpc/e_sqrt.c: Move contents to w_sqrt.c and provide stub.
+ * sysdeps/powerpc/e_sqrtf.c: Likewise.
+ * sysdeps/powerpc/s_copysignf.S: Provide empty file; symbol is with
+ the double precision version.
+ * sysdeps/powerpc/s_fabsf.S: Likewise.
+ * sysdeps/powerpc/s_isnanf.S: Likewise.
+
1997-08-10 19:17 Philip Blundell <Philip.Blundell@pobox.com>
* nss/nss_db/db-XXX.c: Include <db_185.h> not <db.h>. Somebody
diff --git a/Makefile b/Makefile
index 9034b6fd40..5c233c860f 100644
--- a/Makefile
+++ b/Makefile
@@ -146,7 +146,7 @@ all-Banner-files = $(wildcard $(addsuffix /Banner, $(subdirs)))
$(objpfx)version-info.h: $(+sysdir_pfx)config.make $(all-Banner-files)
(case $(config-os) in \
linux*) version=`(echo -e "#include <linux/version.h>\nUTS_RELEASE"\
- | $(CC) -E -P - | \
+ | $(CC) -E -P - | \
sed -e 's/"\([^"]*\)".*/\1/p' -e d) 2>/dev/null`;\
if [ -z "$$version" ]; then \
if [ -r /proc/version ]; then \
@@ -157,7 +157,7 @@ $(objpfx)version-info.h: $(+sysdir_pfx)config.make $(all-Banner-files)
fi; \
fi; \
echo -n "\"Compiled on a Linux $$version system "; \
- echo "on `date +%Y/%m/%d`.\\n\"" ;; \
+ echo "on `date +%Y-%m-%d`.\\n\"" ;; \
*) ;; \
esac; \
files="$(all-Banner-files)"; \
diff --git a/bits/poll.h b/bits/poll.h
new file mode 100644
index 0000000000..55ec70e363
--- /dev/null
+++ b/bits/poll.h
@@ -0,0 +1,38 @@
+/* Copyright (C) 1997 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
+ 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. */
+
+
+/* Event types that can be polled for. These bits may be set in `events'
+ to indicate the interesting event types; they will appear in `revents'
+ to indicate the status of the file descriptor. */
+#define POLLIN 01 /* There is data to read. */
+#define POLLPRI 02 /* There is urgent data to read. */
+#define POLLOUT 04 /* Writing now will not block. */
+
+/* Some aliases. */
+#define POLLWRNORM POLLOUT
+
+/* Event types always implicitly polled for. These bits need not be set in
+ `events', but they will appear in `revents' to indicate the status of
+ the file descriptor. */
+#define POLLERR 010 /* Error condition. */
+#define POLLHUP 020 /* Hung up. */
+#define POLLNVAL 040 /* Invalid polling request. */
+
+/* Canonical number of polling requests to read in at a time in poll. */
+#define NPOLLFILE 30
diff --git a/catgets/catgets.c b/catgets/catgets.c
index 4c6997e567..d5eefc9e08 100644
--- a/catgets/catgets.c
+++ b/catgets/catgets.c
@@ -87,7 +87,7 @@ catopen (const char *cat_name, int flag)
if (nlspath != NULL && *nlspath != '\0')
{
/* Append the system dependent directory. */
- size_t len = strlen (nlspath + 1 + sizeof NLSPATH);
+ size_t len = strlen (nlspath) + 1 + sizeof NLSPATH;
char *tmp = alloca (len);
__stpcpy (__stpcpy (__stpcpy (tmp, nlspath), ":"), NLSPATH);
@@ -111,6 +111,8 @@ catopen (const char *cat_name, int flag)
result->nlspath = NULL;
}
+ __libc_lock_init (result->lock);
+
return (nl_catd) result;
}
@@ -130,7 +132,7 @@ catgets (nl_catd catalog_desc, int set, int message, const char *string)
catalog = (__nl_catd) catalog_desc;
if (catalog->status == closed)
- __open_catalog (catalog, 1);
+ __open_catalog (catalog);
if (catalog->status == nonexisting)
{
diff --git a/catgets/catgetsinfo.h b/catgets/catgetsinfo.h
index 292572decf..edb1099d8c 100644
--- a/catgets/catgetsinfo.h
+++ b/catgets/catgetsinfo.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>.
@@ -18,6 +18,7 @@
Boston, MA 02111-1307, USA. */
#include <sys/types.h>
+#include <bits/libc-lock.h>
struct catalog_obj
@@ -47,6 +48,8 @@ typedef struct catalog_info
struct catalog_obj *file_ptr;
size_t file_size;
+
+ __libc_lock_define (,lock);
} *__nl_catd;
@@ -56,4 +59,4 @@ typedef struct catalog_info
/* Prototypes for helper functions. */
-void __open_catalog (__nl_catd __catalog, int __with_path);
+void __open_catalog (__nl_catd __catalog);
diff --git a/catgets/gencat.c b/catgets/gencat.c
index 9ce962c3c9..8d310d81f4 100644
--- a/catgets/gencat.c
+++ b/catgets/gencat.c
@@ -988,9 +988,11 @@ read_old (struct catalog *catalog, const char *file_name)
old_cat_obj.status = closed;
old_cat_obj.cat_name = file_name;
+ old_cat_obj.nlspath = NULL;
+ __libc_lock_init (old_cat_obj.lock);
/* Try to open catalog, but don't look through the NLSPATH. */
- __open_catalog (&old_cat_obj, 0);
+ __open_catalog (&old_cat_obj);
if (old_cat_obj.status != mmapped && old_cat_obj.status != malloced)
if (errno == ENOENT)
diff --git a/catgets/open_catalog.c b/catgets/open_catalog.c
index 2c1cbb4a4c..62fb111e43 100644
--- a/catgets/open_catalog.c
+++ b/catgets/open_catalog.c
@@ -33,14 +33,22 @@
void
-__open_catalog (__nl_catd catalog, int with_path)
+__open_catalog (__nl_catd catalog)
{
int fd;
struct stat st;
int swapping;
- if (strchr (catalog->cat_name, '/') != NULL || !with_path)
- fd = open (catalog->cat_name, O_RDONLY);
+ /* Make sure we are alone. */
+ __libc_lock_lock (catalog->lock);
+
+ /* Check whether there was no other thread faster. */
+ if (catalog->status != closed)
+ /* While we waited some other thread tried to open the catalog. */
+ goto unlock_return;
+
+ if (strchr (catalog->cat_name, '/') != NULL || catalog->nlspath == NULL)
+ fd = __open (catalog->cat_name, O_RDONLY);
else
{
const char *run_nlspath = catalog->nlspath;
@@ -164,7 +172,7 @@ __open_catalog (__nl_catd catalog, int with_path)
if (fd < 0 || __fstat (fd, &st) < 0)
{
catalog->status = nonexisting;
- return;
+ goto unlock_return;
}
#ifndef MAP_COPY
@@ -195,7 +203,7 @@ __open_catalog (__nl_catd catalog, int with_path)
if (catalog->file_ptr == NULL)
{
catalog->status = nonexisting;
- return;
+ goto unlock_return;
}
todo = st.st_size;
/* Save read, handle partial reads. */
@@ -207,7 +215,7 @@ __open_catalog (__nl_catd catalog, int with_path)
{
free ((void *) catalog->file_ptr);
catalog->status = nonexisting;
- return;
+ goto unlock_return;
}
todo -= now;
}
@@ -227,14 +235,14 @@ __open_catalog (__nl_catd catalog, int with_path)
swapping = 1;
else
{
- /* Illegal file. Free he resources and mark catalog as not
+ /* Illegal file. Free the resources and mark catalog as not
usable. */
if (catalog->status == mmapped)
__munmap ((void *) catalog->file_ptr, catalog->file_size);
else
free (catalog->file_ptr);
catalog->status = nonexisting;
- return;
+ goto unlock_return;
}
#define SWAP(x) (swapping ? SWAPU32 (x) : (x))
@@ -260,4 +268,8 @@ __open_catalog (__nl_catd catalog, int with_path)
catalog->strings =
(const char *) &catalog->file_ptr->name_ptr[catalog->plane_size
* catalog->plane_depth * 3 * 2];
+
+ /* Release the lock again. */
+ unlock_return:
+ __libc_lock_unlock (catalog->lock);
}
diff --git a/csu/Makefile b/csu/Makefile
index baafac5718..cfc5340d36 100644
--- a/csu/Makefile
+++ b/csu/Makefile
@@ -126,6 +126,7 @@ $(addprefix $(objpfx),$(filter-out $(start-installed-name),$(csu-dummies))):
/ := $$/# bite me.
$(objpfx)abi-tag.h: $(..)abi-tags
+ $(make-target-directory)
rm -f $@.new
sed 's/#.*$//;/^[ ]*$$/d' $< | while read conf tag; do \
test `expr '$(config-machine)-$(config-vendor)-$(config-os)' \
diff --git a/io/Makefile b/io/Makefile
index 055dabeba6..3f37e37c8a 100644
--- a/io/Makefile
+++ b/io/Makefile
@@ -23,7 +23,7 @@ subdir := io
headers := sys/stat.h bits/stat.h sys/statfs.h bits/statfs.h sys/vfs.h \
fcntl.h sys/fcntl.h bits/fcntl.h \
- poll.h sys/poll.h \
+ poll.h sys/poll.h bits/poll.h \
utime.h ftw.h fts.h
routines := \
diff --git a/io/sys/poll.h b/io/sys/poll.h
index e694fe37d5..b9af2cfc0e 100644
--- a/io/sys/poll.h
+++ b/io/sys/poll.h
@@ -1,5 +1,5 @@
/* Compatibility definitions for System V `poll' interface.
- Copyright (C) 1994, 1996 Free Software Foundation, Inc.
+ Copyright (C) 1994, 1996, 1997 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
@@ -22,6 +22,9 @@
#include <features.h>
+/* Get the platform dependent bits of `poll'. */
+#include <bits/poll.h>
+
__BEGIN_DECLS
/* Data structure describing a polling request. */
@@ -32,26 +35,6 @@ struct pollfd
short int revents; /* Types of events that actually occurred. */
};
-/* Event types that can be polled for. These bits may be set in `events'
- to indicate the interesting event types; they will appear in `revents'
- to indicate the status of the file descriptor. */
-#define POLLIN 01 /* There is data to read. */
-#define POLLPRI 02 /* There is urgent data to read. */
-#define POLLOUT 04 /* Writing now will not block. */
-
-/* Some aliases. */
-#define POLLWRNORM POLLOUT
-
-/* Event types always implicitly polled for. These bits need not be set in
- `events', but they will appear in `revents' to indicate the status of
- the file descriptor. */
-#define POLLERR 010 /* Error condition. */
-#define POLLHUP 020 /* Hung up. */
-#define POLLNVAL 040 /* Invalid polling request. */
-
-/* Canonical number of polling requests to read in at a time in poll. */
-#define NPOLLFILE 30
-
/* Poll the file descriptors described by the NFDS structures starting at
FDS. If TIMEOUT is nonzero and not -1, allow TIMEOUT milliseconds for
diff --git a/libio/fileops.c b/libio/fileops.c
index b3a3a24651..10f7567b0a 100644
--- a/libio/fileops.c
+++ b/libio/fileops.c
@@ -575,19 +575,7 @@ _IO_file_read (fp, buf, size)
void *buf;
_IO_ssize_t size;
{
- for (;;)
- {
- _IO_ssize_t count = _IO_read (fp->_fileno, buf, size);
-#if 0 && defined EINTR
- /* We must not do this optimization since POSIX.1 explicitly
- requests that the stream operations must return with the
- error EINTR if this happens. There must be the possibility
- that stream operations time out. --drepper */
- if (count == -1 && errno == EINTR)
- continue;
-#endif
- return count;
- }
+ return _IO_read (fp->_fileno, buf, size);
}
_IO_pos_t
@@ -626,19 +614,8 @@ _IO_file_write (f, data, n)
_IO_ssize_t count = _IO_write (f->_fileno, data, to_do);
if (count == EOF)
{
-#if 0 && defined EINTR
- /* We must not do this optimization since POSIX.1 explicitly
- requests that the stream operations must return with the
- error EINTR if this happens. There must be the
- possibility that stream operations time out. --drepper */
- if (errno == EINTR)
- continue;
- else
-#endif
- {
- f->_flags |= _IO_ERR_SEEN;
- break;
- }
+ f->_flags |= _IO_ERR_SEEN;
+ break;
}
to_do -= count;
data = (void *) ((char *) data + count);
diff --git a/localedata/CHECKSUMS b/localedata/CHECKSUMS
index 7c71e4ea7f..0c01ab21b3 100644
--- a/localedata/CHECKSUMS
+++ b/localedata/CHECKSUMS
@@ -156,6 +156,7 @@ db3c60025eb80244d70bf7889f058055 charmaps/T.101-G2
572baa84bd05d4b236b7e2fb211d0dfd charmaps/T.61-7BIT
1e39e36aa7544014059b0aa8381ab051 charmaps/T.61-8BIT
81c8e12a75dff4371ce82773d670cd6d charmaps/VIDEOTEX-SUPPL
+910e8174540ecba1ac61b5f27f6dc359 locales/cs_CZ
45ade09ead9fd385d58504bfc005ecab locales/da_DK
249894e0554d46d1fbdae4a5fb8cc20e locales/de_AT
b3628f73e00bb655a5e96bcc2331893c locales/de_BE
@@ -175,14 +176,13 @@ bda978c8b0e379d57a8599edfdb2e858 locales/fi_FI
a25300033ea6c619a4e15051f14aa65e locales/fo_FO
02ca55b19338f94530f0b60999638ed4 locales/fr_BE
655c7b8713b9aad20014df2c27928cb7 locales/fr_CA
-8e60885c3fda81bc7773f139657974f3 locales/fr_CA,2.13
-8a76a0e3ea2923367fdbab78a6bc67cb locales/fr_CA,2.13.orig
+d5bec15a74c4107a77a46fe185883574 locales/fr_CA,2.13
19403a5cd69a9ad658b173859eb022ef locales/fr_CH
48d8981b117e72c5eb2e9c181cbd7d2b locales/fr_FR
cc1b77cf4cdc4488a99637e730e0f57f locales/fr_LU
1987b72e766038b0f475165c994d1469 locales/ga_IE
be2ef06fd9a4b4def515216972fe9250 locales/gr_GR