diff options
48 files changed, 1749 insertions, 390 deletions
diff --git a/.cvsignore b/.cvsignore index 2cb16cdb10..fccffa3b45 100644 --- a/.cvsignore +++ b/.cvsignore @@ -17,3 +17,4 @@ distinfo crypt linuxthreads localedata +secure_rpc @@ -1,3 +1,132 @@ +1997-04-09 01:24 Ulrich Drepper <drepper@cygnus.com> + + * rellns-sh: Rewrite to work also in presence of symlinks. + + * arpg/argp-fmtstream.c: Add casts to prevent warnings. + * argp/argp-fmtstream.h: Likewise. + * argp/argp-help.c: Likewise. + + * elf/dl-minimal.c: Add definition of calloc. + * elf/version.c: Add casts to prevent warnings. + (_dl_check_map_versions): Use calloc instead of malloc+memset. + + * locale/setlocale.c (_nl_current): Add element with index LC_ALL. + Reported by Greg McGary <gkm@eng.ascend.com>. + + * manual/libc.texinfo: Update malloc documentation for new malloc. + * manual/memory.texi: Likewise. + Patch by Wolfram Gloger <wmglo@dent.med.uni-muenchen.de>. + + * math/libm-test.c (check_long): New function. + (check_longlong): New function. + (rinttol_test): New function. + (rinttoll_test): New function. + + * nis/nss_compat/compat-grp.c (in_blacklist): Improve a bit. + * nis/nss_compat/compat-pwd.c: Likewise. + * nis/nss_compat/compat-spwd.c: Likewise. + + * stdlib/erand48_r.c (erand48_r): Build double value using + ieee754_double union and use random bits in different order to + increase effect of seed. + Reported by David Mosberger-Tang <davidm@AZStarNet.com>. + + * sunrpc/svc_auth.c: Moved to ... + * sysdeps/generic/svc_auth.c: ...here. + + * time/time.h: Pretty print. + +1997-04-08 07:19 H.J. Lu <hjl@gnu.ai.mit.edu> + + * libio/genops.c (_IO_flush_all_linebuffered): don't flush on + a read-only stream. + +1997-04-09 01:19 Ulrich Drepper <drepper@cygnus.com> + + * malloc/malloc.c (mALLOC_STATs) [MALLOC_DEBUG>1]: Put declaration + in correct place. + Patch by Marcus G. Daniels <marcus@cathcart.sysc.pdx.edu>. + +1997-04-07 15:34 Ulrich Drepper <drepper@cygnus.com> + + * stdio-common/Makefile (tests): Add tst-ferror. + * stdio-common/tst-ferror.c: New file. Some tests for error + indicator of streams. + * stdio-common/tst-ferror.input: New file. + + * isomac.c: Let tests not fail because the compiler defines itself + symbols which violate the name space rules. gcc defines symbols + for the architecture which are not protected by an underscore + character. + + * math/Makefile (libm-support): Add s_rinttol and s_rinttoll. + (libm-calls): Add s_clog. + * sysdeps/libm-ieee754/s_clog.c: New file. Implementation of + logarithm of complex value. + * sysdeps/libm-ieee754/s_clogf.c: New file. + * sysdeps/libm-ieee754/s_clogl.c: New file. + * math/libm-test.c (clog_test): Compile this function. Fix a few + typos. + (main): Call clog_test. + + * sysdeps/libm-ieee754/s_rinttol.c: New file. Round long double + value to long int. + * sysdeps/libm-i387/s_rinttol.S: New file. + * sysdeps/libm-ieee754/s_rinttoll.c: new file. Round long double + value to long long int. + * sysdeps/libm-i387/s_rinttoll.S: New file. + + * sysdeps/libm-ieee754/s_rintl.c: Many corrections. The previous + version was full of errors. + + * math/math.h (rinttol): Argument is of type `long double' not + `double'. + (rinttoll): Likewise. + (roundtol): Likewise. + (roundtoll): Likewise. + +1997-04-06 11:32 H.J. Lu <hjl@gnu.ai.mit.edu> + + * posix/getopt.c (_getopt_initialize): Preserve optind. + (_getopt_internal): Set optind to 1 if optind == 0 before + calling _getopt_initialize (). + +1997-04-05 16:45 Thorsten Kukuk <kukuk@vt.uni-paderborn.de> + + * nis/rpcsvc/nislib.h: Change const nis_name to new type + const_nis_name. + * nis/nis_intern.c: Likewise. + * nis/nis_intern.h: Likewise. + * nis/nis_server.c: Likewise. + * nis/nis_subr.c: Likewise. + * nis/nis_table.c: Likewise. + * nis/nis_names.c: Likewise. Fill out ns_request structure in + nis_add(). + + * nis/nss_compat/compat-pwd.c: Use reentrant netgroup functions. + * nis/nss_compat/compat-spwd.c: Likewise. + +1997-03-27 07:37 H.J. Lu <hjl@gnu.ai.mit.edu> + + * libio/fileops.c (_IO_file_overflow): Set error when try to write + on a read-only stream. + + * sysdeps/gnu/utmpbits.h (ut_xtime): New symbol. + (ut_time): Define it only if _NO_UT_TIME is not defined. + +1997-04-06 00:42 Ulrich Drepper <drepper@cygnus.com> + + * misc/tst-tsearch.c: Include <string.h>. Define _GNU_SOURCE only + if not already defined. + +1997-04-05 16:14 Ulrich Drepper <drepper@cygnus.com> + + * sysdeps/unix/sysv/linux/netatalk/at.h: Include <sys/socket.h> to + get definition of sa_family_t for <linux/atalk.h>. + Reported by a sun <asun@zoology.washington.edu>. + + * malloc/malloc.c (cALLOc): Little optimization. + 1997-04-05 03:11 Ulrich Drepper <drepper@cygnus.com> * inet/arpa/inet.h: Rewrite. Don't use the ugly BSD way to write @@ -58,10 +58,7 @@ contact <bug-glibc@prep.ai.mit.edu> - exp2 - nearbyint - - ceil - round - - rinttol - - rinttoll - roundtol - roundtoll diff --git a/argp/argp-fmtstream.c b/argp/argp-fmtstream.c index ab2e870af8..0c9b3118e2 100644 --- a/argp/argp-fmtstream.c +++ b/argp/argp-fmtstream.c @@ -157,7 +157,7 @@ __argp_fmtstream_update (argp_fmtstream_t fs) the end of the buffer. */ nl = fs->p; } - else if (fs->point_col + (nl - buf) < fs->rmargin) + else if (fs->point_col + (nl - buf) < (ssize_t) fs->rmargin) { /* The buffer contains a full line that fits within the maximum line width. Reset point and scan the next line. */ @@ -309,7 +309,7 @@ __argp_fmtstream_update (argp_fmtstream_t fs) int __argp_fmtstream_ensure (struct argp_fmtstream *fs, size_t amount) { - if (fs->end - fs->p < amount) + if ((size_t) (fs->end - fs->p) < amount) { ssize_t wrote; @@ -330,7 +330,7 @@ __argp_fmtstream_ensure (struct argp_fmtstream *fs, size_t amount) return 0; } - if (fs->end - fs->buf < amount) + if ((size_t) (fs->end - fs->buf) < amount) /* Gotta grow the buffer. */ { size_t new_size = fs->end - fs->buf + amount; @@ -354,7 +354,7 @@ __argp_fmtstream_ensure (struct argp_fmtstream *fs, size_t amount) ssize_t __argp_fmtstream_printf (struct argp_fmtstream *fs, const char *fmt, ...) { - size_t out; + int out; size_t size_guess = PRINTF_SIZE_GUESS; /* How much space to reserve. */ do diff --git a/argp/argp-fmtstream.h b/argp/argp-fmtstream.h index 280a893c27..d1a262a786 100644 --- a/argp/argp-fmtstream.h +++ b/argp/argp-fmtstream.h @@ -238,7 +238,7 @@ ARGP_FS_EI size_t __argp_fmtstream_set_lmargin (argp_fmtstream_t __fs, size_t __lmargin) { size_t __old; - if (__fs->p - __fs->buf > __fs->point_offs) + if ((size_t) (__fs->p - __fs->buf) > __fs->point_offs) __argp_fmtstream_update (__fs); __old = __fs->lmargin; __fs->lmargin = __lmargin; @@ -250,7 +250,7 @@ ARGP_FS_EI size_t __argp_fmtstream_set_rmargin (argp_fmtstream_t __fs, size_t __rmargin) { size_t __old; - if (__fs->p - __fs->buf > __fs->point_offs) + if ((size_t) (__fs->p - __fs->buf) > __fs->point_offs) __argp_fmtstream_update (__fs); __old = __fs->rmargin; __fs->rmargin = __rmargin; @@ -262,7 +262,7 @@ ARGP_FS_EI size_t __argp_fmtstream_set_wmargin (argp_fmtstream_t __fs, size_t __wmargin) { size_t __old; - if (__fs->p - __fs->buf > __fs->point_offs) + if ((size_t) (__fs->p - __fs->buf) > __fs->point_offs) __argp_fmtstream_update (__fs); __old = __fs->wmargin; __fs->wmargin = __wmargin; @@ -273,7 +273,7 @@ __argp_fmtstream_set_wmargin (argp_fmtstream_t __fs, size_t __wmargin) ARGP_FS_EI size_t __argp_fmtstream_point (argp_fmtstream_t __fs) { - if (__fs->p - __fs->buf > __fs->point_offs) + if ((size_t) (__fs->p - __fs->buf) > __fs->point_offs) __argp_fmtstream_update (__fs); return __fs->point_col >= 0 ? __fs->point_col : 0; } diff --git a/argp/argp-help.c b/argp/argp-help.c index b3d8b36418..ed934e0e3a 100644 --- a/argp/argp-help.c +++ b/argp/argp-help.c @@ -1086,14 +1086,14 @@ hol_entry_help (struct hol_entry *entry, const struct argp_state *state, const char *fstr = filter_doc (tstr, real->key, entry->argp, state); if (fstr && *fstr) { - unsigned col = __argp_fmtstream_point (stream); + unsigned int col = __argp_fmtstream_point (stream); __argp_fmtstream_set_lmargin (stream, uparams.opt_doc_col); __argp_fmtstream_set_wmargin (stream, uparams.opt_doc_col); - if (col > uparams.opt_doc_col + 3) + if (col > (unsigned int) (uparams.opt_doc_col + 3)) __argp_fmtstream_putc (stream, '\n'); - else if (col >= uparams.opt_doc_col) + else if (col >= (unsigned int) uparams.opt_doc_col) __argp_fmtstream_puts (stream, " "); else indent_to (stream, uparams.opt_doc_col); diff --git a/elf/dl-minimal.c b/elf/dl-minimal.c index d83620d02b..12d38c9a3a 100644 --- a/elf/dl-minimal.c +++ b/elf/dl-minimal.c @@ -1,5 +1,5 @@ /* Minimal replacements for basic facilities used in the dynamic linker. - Copyright (C) 1995, 1996 Free Software Foundation, Inc. + Copyright (C) 1995, 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 @@ -77,6 +77,17 @@ malloc (size_t n) return alloc_last_block; } +/* We use this function occasionally since the real implementation may + be optimized when it can assume the memory it returns already is + set to NUL. */ +void * weak_function +calloc (size_t nmemb, size_t size) +{ + size_t total = nmemb * size; + void *result = malloc (total); + return memset (result, '\0', total); +} + /* This will rarely be called. */ void weak_function free (void *ptr) diff --git a/elf/dl-version.c b/elf/dl-version.c index 2a6f1b94df..71eff0d962 100644 --- a/elf/dl-version.c +++ b/elf/dl-version.c @@ -199,7 +199,7 @@ _dl_check_map_versions (struct link_map *map, int verbose) aux->vna_flags & VER_FLG_WEAK); /* Compare the version index. */ - if ((aux->vna_other & 0x7fff) > ndx_high) + if ((unsigned int) (aux->vna_other & 0x7fff) > ndx_high) ndx_high = aux->vna_other & 0x7fff; if (aux->vna_next == 0) @@ -230,7 +230,7 @@ _dl_check_map_versions (struct link_map *map, int verbose) ent = (ElfW(Verdef) *) (map->l_addr + def->d_un.d_ptr); while (1) { - if ((ent->vd_ndx & 0x7fff) > ndx_high) + if ((unsigned int) (ent->vd_ndx & 0x7fff) > ndx_high) ndx_high = ent->vd_ndx & 0x7fff; if (ent->vd_next == 0) @@ -247,9 +247,7 @@ _dl_check_map_versions (struct link_map *map, int verbose) which can be indexed by the version index in the VERSYM section. */ map->l_versions = (struct r_found_version *) - malloc ((ndx_high + 1) * sizeof (*map->l_versions)); - memset (map->l_versions, '\0', - (ndx_high + 1) * sizeof (*map->l_versions)); + calloc (ndx_high + 1, sizeof (*map->l_versions)); if (map->l_versions == NULL) { _dl_signal_error (ENOMEM, (*map->l_name ? map->l_name : _dl_argv[0]), @@ -67,6 +67,10 @@ will see messages about iso646.h, wctype.h and wchar.h not being found. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -168,18 +172,28 @@ static char *macros[] = #define NUMBER_OF_SUFFIXES (sizeof suffix / sizeof *suffix) #define NUMBER_OF_MACROS (sizeof macros / sizeof *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"; + + /* The compiler we use (given on the command line). */ char *CC; /* The -I parameters for CC to find all headers. */ char *INC; -static int check_header (const char *); +static const char **get_null_defines (void); +static int check_header (const char *, const char **); int main (int argc, char *argv[]) { int h; int result = 0; + const char **ignore_list; CC = argc > 1 ? argv[1] : "gcc"; INC = argc > 2 ? argv[2] : ""; @@ -190,44 +204,107 @@ main (int argc, char *argv[]) return EXIT_FAILURE; } + /* First get list of symbols which are defined by the compiler. */ + ignore_list = get_null_defines (); + for (h = 0; h < NUMBER_OF_HEADERS; ++h) { char file_name[HEADER_MAX]; sprintf (file_name, "%s.h", header[h]); - result |= check_header (file_name); + result |= check_header (file_name, ignore_list); } - -#if 0 /* The test |
