diff options
34 files changed, 313 insertions, 188 deletions
@@ -1,3 +1,65 @@ +2002-08-24 Ulrich Drepper <drepper@redhat.com> + + * locale/programs/charmap.c (charmap_new_char): Don't use + ULONG_MAX as maximum UCS4 value. + + * sysdeps/unix/sysv/linux/ia64/sys/user.h: New file. + + * sysdeps/generic/strtol.c: We don't need the isascii test in glibc. + + * malloc/hooks.c (public_sET_STATe): use size_t as type for i. + * malloc/malloc.c (mALLINFo): Likewise. + + * libio/wstrops.c (_IO_wstr_pbackfail): Use WEOF in comparison. + + * libio/wfileops.c (_IO_wfile_overflow): Use EOF not WEOF when + examining result of _IO_do_flush call. + + * stdio-common/vfprintf.c (vfprintf): Use correct type in va_arg. + Use prec not spec when sizing buffers. + + * catgets/open_catalog.c (__open_catalog): Add casts to avoid warnings. + * locale/loadarchive.c (_nl_load_locale_from_archive): Likewise. + * locale/loadlocale.c (_nl_intern_locale_data): Likewise. + * stdio-common/vfscanf.c (inchar): Likewise. + * misc/efgcvt_r.c (fcvt_r): Likewise. + * elf/dl-misc.c (_dl_debug_vdprintf): Likewise. + * elf/readlib.c (process_file): Likewise. + * elf/sprof.c (load_profdata): Likewise. + * sysdeps/ia64/hp-timing.h (HP_TIMING_PRINT): Likewise. + * locale/programs/linereader.c (get_toplvl_escape): Likewise. + * locale/programs/charmap.c (charmap_read): Likewise. + * libio/fileops.c: Likewise. + * libio/fmemopen.c: Likewise. + * stdlib/strtod.c: Likewise. + * elf/dl-load.c: Likewise. + * iconv/iconvconfig.c: Likewise. + * iconv/iconv_prog.c (process_block): Likewise. + + * sysdeps/unix/sysv/linux/ia64/Makefile: Define _ASM_IA64_CURRENT_H + macro to calm down the compiler. + + * iconv/gconv_cache.c (__gconv_load_cache): Add cast to avoid warning. + + * sysdeps/ia64/elf/initfini.c: Don't use newlines embedded in string. + + * sysdeps/unix/sysv/linux/i386/sysdep.S: Update comment regarding + placement of errno definition. + * sysdeps/unix/sysv/linux/m68k/sysdep.S: Likewise. + * sysdeps/unix/sysv/linux/mips/sysdep.S: Likewise. + * sysdeps/unix/sysv/linux/x86_64/sysdep.S: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S: Likewise. + + * resolv/nss_dns/dns-host.c (MAXPACKET): Increase minimum value + from 1024 to 65536, to avoid buffer overrun. + +2002-08-16 Paul Eggert <eggert@twinsun.com> + + * resolv/gethnamaddr.c (MAXPACKET): Increase minimum value + from 1024 to 65536, to avoid buffer overrun. + * resolv/res_query.c (MAXPACKET): Likewise. + 2002-08-24 Andreas Jaeger <aj@suse.de> * sysdeps/unix/sysv/linux/i386/Versions: Remove *xattr syscalls. @@ -12,7 +74,7 @@ * sysdeps/unix/sysv/linux/getsysstats.c (__get_nprocs_conf): Prefer reading /proc/stat since it is more uniform across - architectures.1 + architectures. * manual/texinfo.tex: Update to latest official version. @@ -120,7 +182,6 @@ 2002-08-21 Roland McGrath <roland@redhat.com> * configure.in: Make GCC version check require 3.[2-9]* and no others. - * configure: Regenerated. * manual/install.texi (Tools for Compilation): Say 3.2 is required. (Configuring and compiling): Don't mention older GCC versions any more. * INSTALL: Regenerated. diff --git a/catgets/open_catalog.c b/catgets/open_catalog.c index cd036d9769..cdcc7b83b8 100644 --- a/catgets/open_catalog.c +++ b/catgets/open_catalog.c @@ -194,7 +194,7 @@ __open_catalog (const char *cat_name, const char *nlspath, const char *env_var, goto close_unlock_return; if (__builtin_expect (!S_ISREG (st.st_mode), 0) - || st.st_size < sizeof (struct catalog_obj)) + || (size_t) st.st_size < sizeof (struct catalog_obj)) { /* `errno' is not set correctly but the file is not usable. Use an reasonable error value. */ @@ -305,7 +305,8 @@ __open_catalog (const char *cat_name, const char *nlspath, const char *env_var, /* Now we can check whether the file is large enough to contain the tables it says it contains. */ - if (st.st_size <= (sizeof (struct catalog_obj) + 2 * tab_size + max_offset)) + if ((size_t) st.st_size + <= (sizeof (struct catalog_obj) + 2 * tab_size + max_offset)) /* The last string is not contained in the file. */ goto invalid_file; diff --git a/elf/dl-load.c b/elf/dl-load.c index 89eb6eccc9..c6af48595d 100644 --- a/elf/dl-load.c +++ b/elf/dl-load.c @@ -857,13 +857,13 @@ _dl_map_object_from_fd (const char *name, int fd, struct filebuf *fbp, l->l_phnum = header->e_phnum; maplength = header->e_phnum * sizeof (ElfW(Phdr)); - if (header->e_phoff + maplength <= fbp->len) + if (header->e_phoff + maplength <= (size_t) fbp->len) phdr = (void *) (fbp->buf + header->e_phoff); else { phdr = alloca (maplength); __lseek (fd, header->e_phoff, SEEK_SET); - if (__libc_read (fd, (void *) phdr, maplength) != maplength) + if ((size_t) __libc_read (fd, (void *) phdr, maplength) != maplength) { errstring = N_("cannot read file data"); goto call_lose_errno; @@ -1040,8 +1040,8 @@ _dl_map_object_from_fd (const char *name, int fd, struct filebuf *fbp, postmap: if (l->l_phdr == 0 - && c->mapoff <= header->e_phoff - && (c->mapend - c->mapstart + c->mapoff + && (ElfW(Off)) c->mapoff <= header->e_phoff + && ((size_t) (c->mapend - c->mapstart + c->mapoff) >= header->e_phoff + header->e_phnum * sizeof (ElfW(Phdr)))) /* Found the program header in this segment. */ l->l_phdr = (void *) (c->mapstart + header->e_phoff - c->mapoff); @@ -1414,13 +1414,13 @@ open_verify (const char *name, struct filebuf *fbp) } maplength = ehdr->e_phnum * sizeof (ElfW(Phdr)); - if (ehdr->e_phoff + maplength <= fbp->len) + if (ehdr->e_phoff + maplength <= (size_t) fbp->len) phdr = (void *) (fbp->buf + ehdr->e_phoff); else { phdr = alloca (maplength); __lseek (fd, ehdr->e_phoff, SEEK_SET); - if (__libc_read (fd, (void *) phdr, maplength) != maplength) + if ((size_t) __libc_read (fd, (void *) phdr, maplength) != maplength) { read_error: errval = errno; @@ -1433,7 +1433,7 @@ open_verify (const char *name, struct filebuf *fbp) for (ph = phdr; ph < &phdr[ehdr->e_phnum]; ++ph) if (ph->p_type == PT_NOTE && ph->p_filesz == 32 && ph->p_align >= 4) { - if (ph->p_offset + 32 <= fbp->len) + if (ph->p_offset + 32 <= (size_t) fbp->len) abi_note = (void *) (fbp->buf + ph->p_offset); else { diff --git a/elf/dl-misc.c b/elf/dl-misc.c index 364940b23f..2d42230afe 100644 --- a/elf/dl-misc.c +++ b/elf/dl-misc.c @@ -211,7 +211,7 @@ _dl_debug_vdprintf (int fd, int tag_p, const char *fmt, va_list arg) iov[niov].iov_base = va_arg (arg, char *); iov[niov].iov_len = strlen (iov[niov].iov_base); if (prec != -1) - iov[niov].iov_len = MIN (prec, iov[niov].iov_len ); + iov[niov].iov_len = MIN ((size_t) prec, iov[niov].iov_len); ++niov; break; diff --git a/elf/readlib.c b/elf/readlib.c index f786ecea29..361f78c95d 100644 --- a/elf/readlib.c +++ b/elf/readlib.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. +/* Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Andreas Jaeger <aj@suse.de>, 1999 and Jakub Jelinek <jakub@redhat.com>, 1999. @@ -103,8 +103,8 @@ process_file (const char *real_file_name, const char *file_name, /* Check that the file is large enough so that we can access the information. We're only checking the size of the headers here. */ - if (statbuf.st_size < sizeof (struct exec) - || statbuf.st_size < sizeof (ElfW(Ehdr))) + if ((size_t) statbuf.st_size < sizeof (struct exec) + || (size_t) statbuf.st_size < sizeof (ElfW(Ehdr))) { error (0, 0, _("File %s is too small, not checked."), file_name); fclose (file); diff --git a/elf/sprof.c b/elf/sprof.c index 3424282044..6b5ccc108f 100644 --- a/elf/sprof.c +++ b/elf/sprof.c @@ -675,7 +675,7 @@ load_profdata (const char *name, struct shobj *shobj) return NULL; } - if (st.st_size != shobj->expected_size) + if ((size_t) st.st_size != shobj->expected_size) { error (0, 0, _("profiling data file `%s' does not match shared object `%s'"), diff --git a/iconv/gconv_cache.c b/iconv/gconv_cache.c index 56d8c37519..f7dca0285a 100644 --- a/iconv/gconv_cache.c +++ b/iconv/gconv_cache.c @@ -67,7 +67,7 @@ __gconv_load_cache (void) if (__builtin_expect (__fxstat64 (_STAT_VER, fd, &st), 0) < 0 /* We do not have to start looking at the file if it cannot contain at least the cache header. */ - || st.st_size < sizeof (struct gconvcache_header)) + || (size_t) st.st_size < sizeof (struct gconvcache_header)) { close_and_exit: __close (fd); diff --git a/iconv/iconv_prog.c b/iconv/iconv_prog.c index 8a8535bf50..a67c6ebad1 100644 --- a/iconv/iconv_prog.c +++ b/iconv/iconv_prog.c @@ -410,7 +410,8 @@ process_block (iconv_t cd, char *addr, size_t len, FILE *output) /* We have something to write out. */ int errno_save = errno; - if (fwrite (outbuf, 1, outptr - outbuf, output) < outptr - outbuf + if (fwrite (outbuf, 1, outptr - outbuf, output) + < (size_t) (outptr - outbuf) || ferror (output)) { /* Error occurred while printing the result. */ @@ -435,7 +436,8 @@ conversion stopped due to problem in writing the output")); /* We have something to write out. */ int errno_save = errno; - if (fwrite (outbuf, 1, outptr - outbuf, output) < outptr - outbuf + if (fwrite (outbuf, 1, outptr - outbuf, output) + < (size_t) (outptr - outbuf) || ferror (output)) { /* Error occurred while printing the result. */ diff --git a/iconv/iconvconfig.c b/iconv/iconvconfig.c index 27b8b02dac..62e3e4e413 100644 --- a/iconv/iconvconfig.c +++ b/iconv/iconvconfig.c @@ -441,8 +441,8 @@ add_alias (char *rp) return; *wp++ = '\0'; - assert (strlen (from) + 1 == to - from); - assert (strlen (to) + 1 == wp - to); + assert (strlen (from) + 1 == (size_t) (to - from)); + assert (strlen (to) + 1 == (size_t) (wp - to)); new_alias (from, to - from, to, wp - to); } @@ -604,15 +604,15 @@ add_module (char *rp, const char *directory) /* See whether we must add the ending. */ need_ext = 0; - if (wp - module < sizeof (gconv_module_ext) + if ((size_t) (wp - module) < sizeof (gconv_module_ext) || memcmp (wp - sizeof (gconv_module_ext), gconv_module_ext, sizeof (gconv_module_ext)) != 0) /* We must add the module extension. */ need_ext = sizeof (gconv_module_ext) - 1; - assert (strlen (from) + 1 == to - from); - assert (strlen (to) + 1 == module - to); - assert (strlen (module) + 1 == wp - module); + assert (strlen (from) + 1 == (size_t) (to - from)); + assert (strlen (to) + 1 == (size_t) (module - to)); + assert (strlen (module) + 1 == (size_t) (wp - module)); new_module (from, to - from, to, module - to, directory, module, wp - module, cost, need_ext); @@ -1179,7 +1179,7 @@ write_output (void) total += iov[idx].iov_len; ++idx; - assert (cur_extra_table - extra_table + assert ((size_t) (cur_extra_table - extra_table) <= ((sizeof (struct extra_entry) + sizeof (gidx_t) + sizeof (struct extra_entry_module)) * nextra_modules)); @@ -1189,7 +1189,7 @@ write_output (void) total += iov[idx].iov_len; ++idx; - if (TEMP_FAILURE_RETRY (writev (fd, iov, idx)) != total + if ((size_t) TEMP_FAILURE_RETRY (writev (fd, iov, idx)) != total /* The file was created with mode 0600. Make it world-readable. */ || fchmod (fd, 0644) != 0 /* Rename the file, possibly replacing an old one. */ diff --git a/libio/fileops.c b/libio/fileops.c index b6655bed5e..720796a72a 100644 --- a/libio/fileops.c +++ b/libio/fileops.c @@ -477,7 +477,8 @@ _IO_new_do_write (fp, data, to_do) const char *data; _IO_size_t to_do; { - return (to_do == 0 || new_do_write (fp, data, to_do) == to_do) ? 0 : EOF; + return (to_do == 0 + || (_IO_size_t) new_do_write (fp, data, to_do) == to_do) ? 0 : EOF; } INTDEF2(_IO_new_do_write, _IO_do_write) @@ -1423,7 +1424,8 @@ _IO_file_xsgetn (fp, data, n) /* If we now want less than a buffer, underflow and repeat the copy. Otherwise, _IO_SYSREAD directly to the user buffer. */ - if (fp->_IO_buf_base && want < fp->_IO_buf_end - fp->_IO_buf_base) + if (fp->_IO_buf_base + && want < (size_t) (fp->_IO_buf_end - fp->_IO_buf_base)) { if (__underflow (fp) == EOF) break; diff --git a/libio/fmemopen.c b/libio/fmemopen.c index a1c75f2cf1..ab6ffdd678 100644 --- a/libio/fmemopen.c +++ b/libio/fmemopen.c @@ -98,7 +98,7 @@ fmemopen_read (void *cookie, char *b, size_t s) if (c->pos + s > c->size) { - if (c->pos == c->size) + if ((size_t) c->pos == c->size) return 0; s = c->size - c->pos; } @@ -106,7 +106,7 @@ fmemopen_read (void *cookie, char *b, size_t s) memcpy (b, &(c->buffer[c->pos]), s); c->pos += s; - if (c->pos > c->maxpos) + if ((size_t) c->pos > c->maxpos) c->maxpos = c->pos; return s; @@ -125,7 +125,7 @@ fmemopen_write (void *cookie, const char *b, size_t s) if (c->pos + s + addnullc > c->size) { - if (c->pos + addnullc == c->size) + if ((size_t) (c->pos + addnullc) == c->size) { __set_errno (ENOSPC); return -1; @@ -136,7 +136,7 @@ fmemopen_write (void *cookie, const char *b, size_t s) memcpy (&(c->buffer[c->pos]), b, s); c->pos += s; - if (c->pos > c->maxpos) + if ((size_t) c->pos > c->maxpos) { c->maxpos = c->pos; if (addnullc) @@ -173,7 +173,7 @@ fmemopen_seek (void *cookie, _IO_off64_t *p, int w) return -1; } - if (np < 0 || np > c->size) + if (np < 0 || (size_t) np > c->size) return -1; c->pos = np; diff --git a/libio/wfileops.c b/libio/wfileops.c index 770c9b2ab6..e9fe55bba5 100644 --- a/libio/wfileops.c +++ b/libio/wfileops.c @@ -430,12 +430,12 @@ _IO_wfile_overflow (f, wch) return _IO_do_flush (f); if (f->_wide_data->_IO_write_ptr == f->_wide_data->_IO_buf_end) /* Buffer is really full */ - if (_IO_do_flush (f) == WEOF) + if (_IO_do_flush (f) == EOF) return WEOF; *f->_wide_data->_IO_write_ptr++ = wch; if ((f->_flags & _IO_UNBUFFERED) || ((f->_flags & _IO_LINE_BUF) && wch == L'\n')) - if (_IO_do_flush (f) == WEOF) + if (_IO_do_flush (f) == EOF) return WEOF; return wch; } diff --git a/libio/wstrops.c b/libio/wstrops.c index 64cdf52aa7..3c9c4971e8 100644 --- a/libio/wstrops.c +++ b/libio/wstrops.c @@ -291,7 +291,7 @@ _IO_wstr_pbackfail (fp, c) _IO_FILE *fp; _IO_wint_t c; { - if ((fp->_flags & _IO_NO_WRITES) && c != EOF) + if ((fp->_flags & _IO_NO_WRITES) && c != WEOF) return WEOF; return INTUSE(_IO_wdefault_pbackfail) (fp, c); } diff --git a/locale/loadarchive.c b/locale/loadarchive.c index cad34b63e6..ef259b9bdb 100644 --- a/locale/loadarchive.c +++ b/locale/loadarchive.c @@ -373,7 +373,7 @@ _nl_load_locale_from_archive (int category, const char **namep) do { to = ranges[upper].from + ranges[upper].len; - if (to > archive_stat.st_size) + if (to > (size_t) archive_stat.st_size) /* The archive locrectab contains bogus offsets. */ return NULL; to = (to + ps - 1) & ~(ps - 1); diff --git a/locale/loadlocale.c b/locale/loadlocale.c index 14f3773c47..ebf25f33d1 100644 --- a/locale/loadlocale.c +++ b/locale/loadlocale.c @@ -1,5 +1,5 @@ /* Functions to read locale data files. - Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc. + Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. @@ -105,7 +105,7 @@ _nl_intern_locale_data (int category, const void *data, size_t datasize) for (cnt = 0; cnt < newdata->nstrings; ++cnt) { size_t idx = filedata->strindex[cnt]; - if (__builtin_expect (idx > newdata->filesize, 0)) + if (__builtin_expect (idx > (size_t) newdata->filesize, 0)) { puntdata: free (newdata); diff --git a/locale/programs/charmap.c b/locale/programs/charmap.c index 0aa623bf34..8612d99688 100644 --- a/locale/programs/charmap.c +++ b/locale/programs/charmap.c @@ -244,9 +244,9 @@ default character map file `%s' not found"), DEFAULT_CHARMAP)); do { - struct charseq * seq = charmap_find_symbol (result, p, 1); + struct charseq *seq = charmap_find_symbol (result, p, 1); - if (seq == NULL || seq->ucs4 != *p) + if (seq == NULL || seq->ucs4 != (uint32_t) *p) failed = 1; } while (*p++ != '\0'); @@ -962,7 +962,7 @@ charmap_new_char (struct linereader *lr, struct charmap_t *cm, errno = 0; newp->ucs4 = strtoul (from + 1, &endp, 16); if (endp - from != len1 - || (newp->ucs4 == ULONG_MAX && errno == ERANGE) + || (newp->ucs4 == ~((uint32_t) 0) && errno == ERANGE) || newp->ucs4 >= 0x80000000) /* This wasn't successful. Signal this name cannot be a correct UCS value. */ @@ -1008,9 +1008,9 @@ hexadecimal range format should use only capital characters")); errno = 0; from_nr = strtoul (&from[prefix_len], &from_end, decimal_ellipsis ? 10 : 16); - if (*from_end != '\0' || (from_nr == ULONG_MAX && errno == ERANGE) + if (*from_end != '\0' || (from_nr == UINT_MAX && errno == ERANGE) || ((to_nr = strtoul (&to[prefix_len], &to_end, - decimal_ellipsis ? 10 : 16)) == ULONG_MAX + decimal_ellipsis ? 10 : 16)) == UINT_MAX && errno == ERANGE) || *to_end != '\0') { @@ -1057,7 +1057,7 @@ hexadecimal range format should use only capital characters")); errno = 0; newp->ucs4 = strtoul (name_end + 1, &endp, 16); if (endp - name_end != len1 - || (newp->ucs4 == ULONG_MAX && errno == ERANGE) + || (newp->ucs4 == ~((uint32_t) 0) && errno == ERANGE) || newp->ucs4 >= 0x80000000) /* This wasn't successful. Signal this name cannot be a correct UCS value. */ diff --git a/locale/programs/linereader.c b/locale/programs/linereader.c index e21616538f..2c6eb8d3fe 100644 --- a/locale/programs/linereader.c +++ b/locale/programs/linereader.c @@ -381,7 +381,7 @@ get_toplvl_escape (struct linereader *lr) bytes[nbytes++] = byte; } while (ch == lr->escape_char - && nbytes < sizeof (lr->token.val.charcode.bytes)); + && nbytes < (int) sizeof (lr->token.val.charcode.bytes)); if (!isspace (ch)) lr_error (lr, _("garbage at end of character code specification")); diff --git a/malloc/hooks.c b/malloc/hooks.c index a36980360a..9ce8515b2a 100644 --- a/malloc/hooks.c +++ b/malloc/hooks.c @@ -527,7 +527,7 @@ int public_sET_STATe(Void_t* msptr) { struct malloc_save_state* ms = (struct malloc_save_state*)msptr; - int i; + size_t i; mbinptr b; disallow_malloc_check = 1; diff --git a/malloc/malloc.c b/malloc/malloc.c index 03c3c9a33b..3eba2bec45 100644 --- a/malloc/malloc.c +++ b/malloc/malloc.c @@ -5011,7 +5011,7 @@ size_t mUSABLe(mem) Void_t* mem; struct mallinfo mALLINFo(mstate av) { struct mallinfo mi; - int i; + size_t i; mbinptr b; mchunkptr p; INTERNAL_SIZE_T avail; diff --git a/misc/efgcvt_r.c b/misc/efgcvt_r.c index d93dda55af..ac2a5c45bf 100644 --- a/misc/efgcvt_r.c +++ b/misc/efgcvt_r.c @@ -141,9 +141,9 @@ APPEND (FUNC_PREFIX, fcvt_r) (value, ndigit, decpt, sign, buf, len) if (left) { *decpt += left; - if (--len > n) + if ((ssize_t) --len > n) { - while (left-- > 0 && n < len) + while (left-- > 0 && n < (ssize_t) len) buf[n++] = '0'; buf[n] = '\0'; } diff --git a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c index 21368e1aab..e59d6fbcd1 100644 --- a/stdio-common/vfprintf.c +++ b/stdio-common/vfprintf.c @@ -993,7 +993,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap) if (!left) \ PAD (L' '); \ if (fspec == NULL) \ - outchar (va_arg (ap, wint_t)); \ + outchar (va_arg (ap, wchar_t)); \ else \ outchar (args_value[fspec->data_arg].pa_wchar); \ if (left) \ @@ -1113,7 +1113,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap) size_t len; \ \ memset (&mbstate, '\0', sizeof (mbstate_t)); \ - len = __wcrtomb (buf, (fspec == NULL ? va_arg (ap, wint_t) \ + len = __wcrtomb (buf, (fspec == NULL ? va_arg (ap, wchar_t) \ : args_value[fspec->data_arg].pa_wchar), \ &mbstate); \ if (len == (size_t) -1) \ @@ -1452,7 +1452,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap) { /* We have to use a special buffer. The "32" is just a safe bet for all the output which is not counted in the width. */ - if (width < 32768 / sizeof (CHAR_T)) + if (width < (int) (32768 / sizeof (CHAR_T))) workend = ((CHAR_T *) alloca ((width + 32) * sizeof (CHAR_T)) + (width + 32)); else @@ -1477,7 +1477,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap) { /* We have to use a special buffer. The "32" is just a safe bet for all the output which is not counted in the width. */ - if (width < 32768 / sizeof (CHAR_T)) + if (width < (int) (32768 / sizeof (CHAR_T))) workend = ((CHAR_T *) alloca ((width + 32) * sizeof (CHAR_T)) + (width + 32)); else @@ -1520,17 +1520,17 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap) if (prec > width && prec + 32 > (int)(sizeof (work_buffer) / sizeof (work_buffer[0]))) { - if (spec < 32768 / sizeof (CHAR_T)) - workend = alloca (spec + 32) + (spec + 32); + if (prec < (int) (32768 / sizeof (CHAR_T))) + workend = alloca (prec + 32) + (prec + 32); else { - workstart = (CHAR_T *) malloc ((spec + 32) * sizeof (CHAR_T)); + workstart = (CHAR_T *) malloc ((prec + 32) * sizeof (CHAR_T)); if (workstart == NULL) { done = -1; goto all_done; } - workend = workstart + (spec + 32); + workend = workstart + (prec + 32); } } JUMP (*f, step2_jumps); @@ -1835,7 +1835,7 @@ do_positional: if (MAX (prec, width) + 32 > (int) (sizeof (work_buffer) / sizeof (CHAR_T))) { - if (MAX (prec, width) < 32768 / sizeof (CHAR_T)) + if (MAX (prec, width) < (int) (32768 / sizeof (CHAR_T))) workend = ((CHAR_T *) alloca ((MAX (prec, width) + 32) * sizeof (CHAR_T)) + (MAX (prec, width) + 32)); diff --git a/stdio-common/vfscanf.c b/stdio-common/vfscanf.c index f607fb4739..97163de60d 100644 --- a/stdio-common/vfscanf.c +++ b/stdio-common/vfscanf.c @@ -81,7 +81,8 @@ # define inchar() (c == WEOF ? ((errno = inchar_errno), WEOF) \ : ((c = _IO_getwc_unlocked (s)), \ (void) (c != WEOF \ - ? ++read_in : (inchar_errno = errno)), c)) + ? ++read_in \ + : (size_t) (inchar_errno = errno)), c)) # define MEMCPY(d, s, n) __wmemcpy (d, s, n) # define ISSPACE(Ch) iswspace (Ch) @@ -112,7 +113,8 @@ # define inchar() (c == EOF ? ((errno = inchar_errno), EOF) \ : ((c = _IO_getc_unlocked (s)), \ (void) (c != EOF \ - ? ++read_in : (inchar_errno = errno)), c)) + ? ++read_in \ + : (size_t) (inchar_errno = errno)), c)) # define MEMCPY(d, s, n) memcpy (d, s, n) # define ISSPACE(Ch) isspace (Ch) # define ISDIGIT(Ch) isdigit (Ch) diff --git a/stdlib/strtod.c b/stdlib/strtod.c index 7509a9d3f3..518b171f09 100644 --- a/stdlib/strtod.c +++ b/stdlib/strtod.c @@ -556,7 +556,8 @@ INTERNAL (STRTOF) (nptr, endptr, group LOCALE_PARAM) /* Return 0.0 if no legal string is found. No character is used even if a sign was found. */ #ifdef USE_WIDE_CHAR - if (c == decimal && cp[1] >= L'0' && cp[1] <= L'9') + if (c == (wint_t) decimal + && (wint_t) cp[1] >= L'0' && (wint_t) cp[1] <= L'9') { /* We accept it. This funny construct is here only to indent the code directly. */ @@ -648,7 +649,7 @@ INTERNAL (STRTOF) (nptr, endptr, group LOCALE_PARAM) /* Ignore leading zeroes. This helps us to avoid useless computations. */ #ifdef USE_WIDE_CHAR - while (c == L'0' || (thousands != L'\0' && c == thousands)) + while (c == L'0' || ((wint_t) thousands != L'\0' && c == (wint_t) thousands)) c = *++cp; #else if (thousands == NULL) @@ -675,17 +676,19 @@ INTERNAL (STRTOF) (nptr, endptr, group LOCALE_PARAM) /* If no other digit but a '0' is found the result is 0.0. Return current read pointer. */ if ((c < L_('0') || c > L_('9')) - && (base == 16 && (c < TOLOWER (L_('a')) || c > TOLOWER (L_('f')))) + && (base == 16 && (c < (wint_t) TOLOWER (L_('a')) + || c > (wint_t) TOLOWER (L_('f')))) #ifdef USE_WIDE_CHAR - && c != decimal + && c != (wint_t) decimal #else && ({ for (cnt = 0; decimal[cnt] != '\0'; ++cnt) if (decimal[cnt] != cp[cnt]) break; decimal[cnt] != '\0'; }) #endif - && (base == 16 && (cp == start_of_digits || TOLOWER (c) != L_('p'))) - && (base != 16 && TOLOWER (c) != L_('e'))) + && (base == 16 && (cp == start_of_digits + || (CHAR_TYPE) TOLOWER (c) != L_('p'))) + && (base != 16 && (CHAR_TYPE) TOLOWER (c) != L_('e'))) { tp = correctly_grouped_prefix (start_of_digits, cp, thousands, grouping); /* If TP is at the start of the digits, there was no correctly @@ -700,12 +703,13 @@ INTERNAL (STRTOF) (nptr, endptr, group LOCALE_PARAM) while (1) { if ((c >= L_('0') && c <= L_('9')) - || (base == 16 && TOLOWER (c) >= L_('a') && TOLOWER (c) <= L_('f'))) + || (base == 16 && (wint_t) TOLOWER (c) >= L_('a') + && (wint_t) TOLOWER (c) <= L_('f'))) ++dig_no; else { #ifdef USE_WIDE_CHAR - if (thousands == L'\0' || c != thousands) + if ((wint_t) thousands == L'\0' || c != (wint_t) thousands) /* Not a digit or separator: end of the integer part. */ break; #else @@ -765,7 +769,7 @@ INTERNAL (STRTOF) (nptr, endptr, group LOCALE_PARAM) numbers like `16.' i.e. with decimal but without trailing digits. */ if ( #ifdef USE_WIDE_CHAR - c == decimal + c == (wint_t) decimal #else ({ for (cnt = 0; decimal[cnt] != '\0'; ++cnt) if (decimal[cnt] != cp[cnt]) diff --git a/sysdeps/generic/strtol.c b/sysdeps/generic/strtol.c index 7e174d488b..28806083cf 100644 --- a/sysdeps/generic/strtol.c +++ b/sysdeps/generic/strtol.c @@ -188,7 +188,8 @@ extern int errno; # define TOUPPER(Ch) towupper (Ch) # endif # else -# if defined STDC_HEADERS || (!defined isascii && !defined HAVE_ISASCII) +# if defined _LIBC \ + || defined STDC_HEADERS || (!defined isascii && !defined HAVE_ISASCII) # define IN_CTYPE_DOMAIN(c) 1 # else # define IN_CTYPE_DOMAIN(c) isascii(c) diff --git a/sysdeps/ia64/elf/initfini.c b/sysdeps/ia64/elf/initfini.c index e4d6df7613..2e3234a2aa 100644 --- a/sysdeps/ia64/elf/initfini.c +++ b/sysdeps/ia64/elf/initfini.c @@ -1,5 +1,5 @@ /* Special .init and .fini section support for ia64. - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2002 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 @@ -27,81 +27,81 @@ * crtn.s puts the corresponding function epilogues in the .init and .fini sections. */ -__asm__ (" - -#include \"defs.h\" - -/*@HEADER_ENDS*/ - -/*@_init_PROLOG_BEGINS*/ - .section .init - .align 16 - .global _init# - .proc _init# -_init: - alloc r34 = ar.pfs, 0, 3, 0, 0 - mov r32 = r12 - mov r33 = b0 - adds r12 = -16, r12 - addl r14 = @ltoff(@fptr(__gmon_start__#)), gp - ;; - ld8 r15 = [r14] - ;; - cmp.eq p6, p7 = 0, r15 - (p6) br.cond.dptk .L5 - -/* we could use r35 to save gp, but we use the stack since that's what - * all the other init routines will do --davidm 00/04/05 */ - st8 [r12] = gp, -16 - br.call.sptk.many b0 = __gmon_start__# ;; - adds r12 = 16, r12 - ;; - ld8 gp = [r12] - ;; -.L5: - .align 16 - .endp _init# - -/*@_init_PROLOG_ENDS*/ - -/*@_init_EPILOG_BEGINS*/ - .section .init - .regstk 0,2,0,0 - mov r12 = r32 - mov ar.pfs = r34 - mov b0 = r33 - br.ret.sptk.many b0 - .endp _init# -/*@_init_EPILOG_ENDS*/ - -/*@_fini_PROLOG_BEGINS*/ - .section .fini - .align 16 - .global _fini# - .proc _fini# -_fini: - alloc r34 = ar.pfs, 0, 3, 0, 0 - mov r32 = r12 - mov r33 = b0 - adds r12 = -16, r12 - ;; - .align 16 - .endp _fini# - -/*@_fini_PROLOG_ENDS*/ - br.call.sptk.many b0 = i_am_not_a_leaf# ;; - ;; - -/*@_fini_EPILOG_BEGINS*/ - .section .fini - mov r12 = r32 - mov ar.pfs = r34 - mov b0 = r33 - br.ret.sptk.many b0 - .endp _fini# - -/*@_fini_EPILOG_ENDS*/ - -/*@TRAILER_BEGINS*/ - .weak __gmon_start__# +__asm__ ("\n\ +\n\ +#include \"defs.h\"\n\ +\n\ +/*@HEADER_ENDS*/\n\ +\n\ +/*@_init_PROLOG_BEGINS*/\n\ + .section .init\n\ + .align 16\n\ + .global _init#\n\ + .proc _init#\n\ +_init:\n\ + alloc r34 = ar.pfs, 0, 3, 0, 0\n\ + mov r32 = r12\n\ + mov r33 = b0\n\ + adds r12 = -16, r12\n\ + addl r14 = @ltoff(@fptr(__gmon_start__#)), gp\n\ + ;;\n\ + ld8 r15 = [r14]\n\ + ;;\n\ + cmp.eq p6, p7 = 0, r15\n\ + (p6) br.cond.dptk .L5\n\ +\n\ +/* we could use r35 to save gp, but we use the stack since that's what\n\ + * all the other init routines will do --davidm 00/04/05 */\n\ + st8 [r12] = gp, -16\n\ + br.call.sptk.many b0 = __gmon_start__# ;;\n\ + adds r12 = 16, r12\n\ + ;;\n\ + ld8 gp = [r12]\n\ + ;;\n\ +.L5:\n\ + .align 16\n\ + .endp _init#\n\ +\n\ +/*@_init_PROLOG_ENDS*/\n\ +\n\ +/*@_init_EPILOG_BEGINS*/\n\ + .section .init\n\ + .regstk 0,2,0,0\n\ + mov r12 = r32\n\ + mov ar.pfs = r34\n\ + mov b0 = r33\n\ + br.ret.sptk.many b0\n\ + .endp _init#\n\ +/*@_init_EPILOG_ENDS*/\n\ +\n\ +/*@_fini_PROLOG_BEGINS*/\n\ + .section .fini\n\ + .align 16\n\ + .global _fini#\n\ + .proc _fini#\n\ +_fini:\n\ + alloc r34 = ar.pfs, 0, 3, 0, 0\n\ + mov r32 = r12\n\ + mov r33 = b0\n\ + adds r12 = -16, r12\n\ + ;;\n\ + .align 16\n\ + .endp _fini#\n\ +\n\ +/*@_fini_PROLOG_ENDS*/\n\ + br.call.sptk.many b0 = i_am_not_a_leaf# ;;\n\ + ;;\n\ +\n\ +/*@_fini_EPILOG_BEGINS*/\n\ + .section .fini\n\ + mov r12 = r32\n\ + mov ar.pfs = r34\n\ + mov b0 = r33\n\ + br.ret.sptk.many b0\n\ + .endp _fini#\n\ +\n\ +/*@_fini_EPILOG_ENDS*/\n\ +\n\ +/*@TRAILER_BEGINS*/\n\ + .weak __gmon_start__#\n\ "); diff --git a/sysdeps/ia64/hp-timing.h b/sysdeps/ia64/hp-timing.h index 3b6c07f451..fd920c348d 100644 --- a/sysdeps/ia64/hp-timing.h +++ b/sysdeps/ia64/hp-timing.h @@ -141,7 +141,8 @@ typedef unsigned long int hp_timing_t; char *__dest = (Buf); \ while (__len-- > 0 && __cp < __buf + sizeof (__buf)) \ *__dest++ = *__cp++; \ - memcpy (__dest, " clock cycles", MIN (__len, sizeof (" clock cycles"))); \ + memcpy (__dest, " clock cycles", MIN (__len, \ + (int) sizeof (" clock cycles"))); \ } while (0) #endif /* hp-timing.h */ diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.S b/sysdeps/unix/sysv/linux/i386/sysdep.S index 09428987ec..9546bb3c64 100644 --- a/sysdeps/unix/sysv/linux/i386/sysdep.S +++ b/sysdeps/unix/sysv/linux/i386/sysdep.S @@ -19,11 +19,10 @@ #include <sysdep.h> #include <tls.h> -/* Because the Linux version is in fact i386/ELF and the start.? file - for this system (sysdeps/i386/elf/start.S) is also used by The Hurd - and therefore this files must not contain the definition of the - `errno' variable (I don't know why, ask Roland), we have to define - it somewhere else. +/* The Linux version is in fact i386/ELF and the start.? file for this + system (sysdeps/i386/elf/start.S) is also used by The Hurd. This file + must not contain the definition of the `errno' variable, we have to + define it somewhere else. ...and this place is here. */ #if USE_TLS && HAVE___THREAD diff --git a/sysdeps/unix/sysv/linux/ia64/Makefile b/sysdeps/unix/sysv/linux/ia64/Makefile index e028a2d618..4c1e6f2059 100644 --- a/sysdeps/unix/sysv/linux/ia64/Makefile +++ b/sysdeps/unix/sysv/linux/ia64/Makefile @@ -16,3 +16,7 @@ sysdep-dl-routines += dl-static sysdep_routines += $(sysdep-dl-routines) sysdep-rtld-routines += $(sysdep-dl-routines) endif + +# This is a crude attempt to silence the compiler which complains about +# then 'current' definition in the kernel headers. +CPPFLAGS += -D_ASM_IA64_CURRENT_H diff --git a/sysdeps/unix/sysv/linux/ia64/sys/user.h b/sysdeps/unix/sysv/linux/ia64/sys/user.h new file mode 100644 index 0000000000..039218761b --- /dev/null +++ b/sysdeps/unix/sysv/linux/ia64/sys/user.h @@ -0,0 +1,54 @@ +/* Copyright (C) 2002 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 Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#ifndef _SYS_USER_H +#define _SYS_USER_H 1 + +#include <features.h> +#include <sys/types.h> + +/* This definition comes directly from the kernel headers. If + anything changes in them this header has to be changed, too. */ + + +/* The definition in the kernel has the comment "XXX fix me". */ +#define EF_SIZE 3072 + + +struct user +{ + unsigned long int regs[EF_SIZE / 8 + 32]; /* Integer and fp regs. */ + size_t u_tsize; /* Text size (pages). */ + size_t u_dsize; /* Data size (pages). */ + size_t u_ssize; /* Stack size (pages). */ + unsigned long int start_code; /* Text starting address. */ + unsigned long int start_data; /* Data starting address. */ + unsigned long int start_stack; /* Stack starting address. */ + long int signal; /* Signal causing core dump. */ + struct regs *u_ar0; /* Help gdb find registers. */ + unsigned long int magic; /* Identifies a core file. */ + char u_comm[32]; /* User command name. */ +}; + +#define NBPG PAGE_SIZE +#define UPAGES 1 +#define HOST_TEXT_START_ADDR (u.start_code) +#define HOST_DATA_START_ADDR (u.start_data) +#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG) + +#endif /* sys/user.h */ diff --git a/sysdeps/unix/sysv/linux/m68k/sysdep.S b/sysdeps/unix/sysv/linux/m68k/sysdep.S index 30beaf233f..628335b8d0 100644 --- a/sysdeps/unix/sysv/linux/m68k/sysdep.S +++ b/sysdeps/unix/sysv/linux/m68k/sysdep.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1996 Free Software Foundation, Inc. +/* Copyright (C) 1996, 2002 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 @@ -18,11 +18,10 @@ #include <sysdep.h> -/* Because the Linux version is in fact m68k/ELF and the start.? file - for this system (sysdeps/m68k/elf/start.S) is also used by The Hurd - and therefore this files must not contain the definition of the - `errno' variable (I don't know why, ask Roland), we have to define - it somewhere else. +/* The Linux version is in fact m68k/ELF and the start.? file for this + system (sysdeps/m68k/elf/start.S) is also used by The Hurd. This file + must not contain the definition of the `errno' variable, we have to + define it somewhere else. ...and this place is here. */ .bss diff --git a/sysdeps/unix/sysv/linux/mips/sysdep.S b/sysdeps/unix/sysv/linux/mips/sysdep.S index d051c4fe6e..2584982bb0 100644 --- a/sysdeps/unix/sysv/linux/mips/sysdep.S +++ b/sysdeps/unix/sysv/linux/mips/sysdep.S @@ -1,4 +1,4 @@ -/* Copyright (C) 1998 Free Software Foundation, Inc. +/* Copyright (C) 1998, 2002 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 @@ -18,11 +18,10 @@ #include <sysdep.h> -/* Because the Linux version is in fact MIPS/ELF and the start.? file - for this system (sysdeps/mips/elf/start.S) is also used by The Hurd - and therefore this files must not contain the definition of the - `errno' variable (I don't know why, ask Roland), we have to define - it somewhere else. +/* The Linux version is in fact MIPS/ELF and the start.? file for this + system (sysdeps/mips/elf/start.S) is also used by The Hurd. This file + must not contain the definition of the `errno' variable, we have to + define it somewhere else. ...and this place is here. */ .bss diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S b/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S index bb90491cba..5b17f6ba4b 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S +++ b/sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2000, 2001 Free Software Foundation, Inc. +/* Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). This file is part of the GNU C Library. @@ -19,11 +19,10 @@ #include <sysdep.h> -/* Because the Linux version is in fact m68k/ELF and the start.? file - for this system (sysdeps/m68k/elf/start.S) is also used by The Hurd - and therefore this files must not contain the definition of the - `errno' variable (I don't know why, ask Roland), we have to define - it somewhere else. +/* The Linux version is in fact S390-32/ELF and the start.? file for this + system (sysdeps/s390/s390-32/elf/start.S) is also used by The Hurd. + This file must not contain the definition of the `errno' variable, + we have to define it somewhere else. ...and this place is here. */ .bss diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S b/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S index 2d49d36d8b..caa50ccc3d 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S +++ b/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2001 Free Software Foundation, Inc. +/* Copyright (C) 2001, 2002 Free Software Foundation, Inc. Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). This file is part of the GNU C Library. @@ -19,11 +19,10 @@ #include <sysdep.h> -/* Because the Linux version is in fact m68k/ELF and the start.? file - for this system (sysdeps/m68k/elf/start.S) is also used by The Hurd - and therefore this files must not contain the definition of the - `errno' variable (I don't know why, ask Roland), we have to define - it somewhere else. +/* The Linux version is in fact S390-64/ELF and the start.? file for this + system (sysdeps/s390/s390-64/elf/start.S) is also used by The Hurd. + This file must not contain the definition of the `errno' variable, + we have to define it somewhere else. ...and this place is here. */ .bss @@ -81,10 +80,9 @@ ENTRY(__syscall_error) brasl %r14,__errno_location@PLT st %r13,0(%r2) lmg %r13,%r15,264(%r15) - lghi %r2,-1 + lghi %r2,-1 br %r14 #endif #endif END (__syscall_error) - diff --git a/sysdeps/unix/sysv/linux/x86_64/sysdep.S b/sysdeps/unix/sysv/linux/x86_64/sysdep.S index 7f041aa730..b8eccc8b9f 100644 --- a/sysdeps/unix/sysv/linux/x86_64/sysdep.S +++ b/sysdeps/unix/sysv/linux/x86_64/sysdep.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2001 Free Software Foundation, Inc. +/* Copyright (C) 2001, 2002 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 @@ -18,11 +18,10 @@ #include <sysdep.h> -/* Because the Linux version is in fact x86-64/ELF and the start.? file - for this system (sysdeps/x86_64/elf/start.S) is also used by The Hurd - and therefore this files must not contain the definition of the - `errno' variable (I don't know why, ask Roland), we have to define - it somewhere else. +/* The Linux version is in fact x86-64/ELF and the start.? file for this + system (sysdeps/x86_64/elf/start.S) is also used by The Hurd. This file + must not contain the definition of the `errno' variable, we have to + define it somewhere else. ...and this place is here. */ .bss |