about summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2002-08-25 04:51:08 +0000
committerUlrich Drepper <drepper@redhat.com>2002-08-25 04:51:08 +0000
commit6dd67bd565db889944d740379e6ae87bd3fd4e44 (patch)
tree57e0f1549fe4d23dc1b6b6ba939904739d2f6a29
parente2dced828ea26102bd9599acd9fc43bf944e37be (diff)
downloadglibc-6dd67bd565db889944d740379e6ae87bd3fd4e44.tar.gz
glibc-6dd67bd565db889944d740379e6ae87bd3fd4e44.tar.xz
glibc-6dd67bd565db889944d740379e6ae87bd3fd4e44.zip
Update.
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.

	architectures.
-rw-r--r--ChangeLog65
-rw-r--r--catgets/open_catalog.c5
-rw-r--r--elf/dl-load.c14
-rw-r--r--elf/dl-misc.c2
-rw-r--r--elf/readlib.c6
-rw-r--r--elf/sprof.c2
-rw-r--r--iconv/gconv_cache.c2
-rw-r--r--iconv/iconv_prog.c6
-rw-r--r--iconv/iconvconfig.c16
-rw-r--r--libio/fileops.c6
-rw-r--r--libio/fmemopen.c10
-rw-r--r--libio/wfileops.c4
-rw-r--r--libio/wstrops.c2
-rw-r--r--locale/loadarchive.c2
-rw-r--r--locale/loadlocale.c4
-rw-r--r--locale/programs/charmap.c12
-rw-r--r--locale/programs/linereader.c2
-rw-r--r--malloc/hooks.c2
-rw-r--r--malloc/malloc.c2
-rw-r--r--misc/efgcvt_r.c4
-rw-r--r--stdio-common/vfprintf.c18
-rw-r--r--stdio-common/vfscanf.c6
-rw-r--r--stdlib/strtod.c22
-rw-r--r--sysdeps/generic/strtol.c3
-rw-r--r--sysdeps/ia64/elf/initfini.c156
-rw-r--r--sysdeps/ia64/hp-timing.h3
-rw-r--r--sysdeps/unix/sysv/linux/i386/sysdep.S9
-rw-r--r--sysdeps/unix/sysv/linux/ia64/Makefile4
-rw-r--r--sysdeps/unix/sysv/linux/ia64/sys/user.h54
-rw-r--r--sysdeps/unix/sysv/linux/m68k/sysdep.S11
-rw-r--r--sysdeps/unix/sysv/linux/mips/sysdep.S11
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S11
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S14
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/sysdep.S11
34 files changed, 313 insertions, 188 deletions
diff --git a/ChangeLog b/ChangeLog
index 37249a8627..702a7d01eb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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