about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--BUGS4
-rw-r--r--ChangeLog58
-rw-r--r--inet/Makefile2
-rw-r--r--string/strverscmp.c2
-rw-r--r--sunrpc/clnt_perr.c2
-rw-r--r--sunrpc/rpc/xdr.h6
-rw-r--r--sunrpc/rpcinfo.c78
-rw-r--r--sunrpc/rpcsvc/rusers.x6
-rw-r--r--sunrpc/xdr_mem.c4
-rw-r--r--sunrpc/xdr_rec.c12
-rw-r--r--sunrpc/xdr_stdio.c12
-rw-r--r--sysdeps/generic/netinet/icmp6.h203
-rw-r--r--sysdeps/generic/netinet/ip6.h44
-rw-r--r--sysdeps/standalone/arm/errnos.h2
-rw-r--r--sysdeps/stub/accept.c2
-rw-r--r--sysdeps/stub/bind.c2
-rw-r--r--sysdeps/stub/connect.c2
-rw-r--r--sysdeps/stub/direntry.h1
-rw-r--r--sysdeps/stub/getpeername.c2
-rw-r--r--sysdeps/stub/getsockname.c2
-rw-r--r--sysdeps/stub/readv.c2
-rw-r--r--sysdeps/stub/recvfrom.c2
-rw-r--r--sysdeps/stub/send.c2
-rw-r--r--sysdeps/stub/sendto.c4
-rw-r--r--sysdeps/stub/ttyname_r.c2
-rw-r--r--sysdeps/stub/writev.c2
-rw-r--r--sysdeps/unix/arm/sysdep.h2
-rw-r--r--sysdeps/unix/sysv/linux/arm/profil-counter.h26
-rw-r--r--sysdeps/unix/sysv/linux/arm/syscall.S8
-rw-r--r--sysdeps/unix/sysv/linux/arm/sysdep.h34
-rw-r--r--sysdeps/unix/sysv/linux/i386/sysdep.h36
-rw-r--r--sysdeps/unix/sysv/linux/netinet/in.h2
-rw-r--r--sysdeps/unix/sysv/linux/shmat.c2
-rw-r--r--sysdeps/unix/sysv/linux/socketbits.h8
34 files changed, 458 insertions, 120 deletions
diff --git a/BUGS b/BUGS
index ac2066293b..611f614aa2 100644
--- a/BUGS
+++ b/BUGS
@@ -1,7 +1,7 @@
 	    List of known bugs (certainly very incomplete)
 	    ----------------------------------------------
 
-Time-stamp: <1997-05-12T02:39:19+0200 drepper>
+Time-stamp: <1997-05-21T21:25:40+0200 drepper>
 
 This following list contains those bugs which I'm aware of.  Please
 make sure that bugs you report are not listed here.  If you can fix one
@@ -10,7 +10,7 @@ of these bugs/limitations I'll certainly be glad to receive a patch.
 Another source of information about bugs is the problem data base of the
 GNU project.  There is an easy to use WWW interface is available at
 
-	http://pogo.gnu.ai.mit.edu:8080/cgi-bin/wwwgnats.pl
+	http://www-gnats.gnu.ai.mit.edu:8080/cgi-bin/wwwgnats.pl
 
 I would appreciate it very much if you could verify the problem was not
 reported before by looking though the database.  To make the information
diff --git a/ChangeLog b/ChangeLog
index 783ebfefe3..77b054bdb7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,61 @@
+1997-05-22 04:09  Ulrich Drepper  <drepper@cygnus.com>
+
+	* sunrpc/clnt_perr.c (clnt_sperrno): Change type of variable i
+	to size_t to prevent warning.
+	* sunrpc/rpcinfo.c (get_inet_address): Use UNADDR_NONE and INADDR_ANY
+	instead of numeric values.
+	Various cleanups.
+	* sunrpc/xdr_mem.c: Use `const char *' instead of `const caddr_t'
+	for xdrmem_putbytes.
+	* sunrpc/xdr_rec.c: Likewise.
+	* sunrpc/xdr_stdio.c: Likewise.
+	* sunrpc/rpc/xdr.h: Likewise.
+
+	* sysdeps/unix/sysv/linux/arm/syscall.s: Pretty printing.
+	* sysdeps/unix/sysv/linux/arm/sysdep.h: Likewise.
+	* sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise.
+
+1997-05-21 22:22  Philip Blundell  <pjb27@cam.ac.uk>
+
+	* inet/Makefile (headers): Add netinet/ip6.h, netinet/icmp6.h.
+	* sysdeps/generic/netinet/ip6.h: New file (for IPv6 Advanced API).
+	* sysdeps/generic/netinet/icmp6.h: Likewise.
+	* sysdeps/unix/sysv/linux/netinet/in.h: Fix typo.
+	* sysdeps/stub/direntry.h (struct dirent): Add d_fileno (needed by
+	glob.c).
+	* sysdeps/standalone/arm/errnos.h: Add EPROTOTYPE, ESRCH.
+	* sysdeps/unix/arm/sysdep.h: Avoid warning about nested comments.
+	* sysdeps/stub/accept.c (accept): Make args match prototype.
+	* sysdeps/stub/bind.c (bind): Likewise.
+	* sysdeps/stub/connect.c (connect): Likewise.
+	* sysdeps/stub/getpeername.c (getpeername): Likewise.
+	* sysdeps/stub/getsockname.c (getsockname): Likewise.
+	* sysdeps/stub/recvfrom.c (recvfrom): Likewise.
+	* sysdeps/stub/send.c (send): Likewise.
+	* sysdeps/stub/ttyname_r.c (ttyname_r): Likewise.
+	* sysdeps/stub/readv.c (readv): Likewise.
+	* sysdeps/stub/writev.c (writev): Likewise.
+	* sysdeps/stub/sendto.c (sendto): Likewise.
+	* sysdeps/unix/sysv/linux/arm/profil-counter.h: New file.
+
+1997-05-18 12:46  Philip Blundell  <pjb27@cam.ac.uk>
+
+	* sysdeps/unix/sysv/linux/socketbits.h: Add new macros CMSG_SPACE,
+	CMSG_LEN, CMSG_ALIGN (for IPv6 Advanced API).
+
+1997-05-21 13:51  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
+
+	* sysdeps/unix/sysv/linux/shmat.c (shmat): Add cast to prevent warning.
+
+	* sunrpc/rpcsvc/rusers.x: Provide prototypes for implemented
+	functions, include <rpc/xdr.h>.
+
+	* string/strverscmp.c: Correct typos in comment.
+
+	* sunrpc/rpc/xdr.h: Add more `const'.
+	* sunrpc/xdr_stdio.c: Likewise.
+	* sunrpc/xdr_rec.c: Likewise.
+
 1997-05-21 17:50  Ulrich Drepper  <drepper@cygnus.com>
 
 	* elf/Makefile (dl-routines): Add dl-sysdepio.
diff --git a/inet/Makefile b/inet/Makefile
index fbd658a7bf..fe4ace39b2 100644
--- a/inet/Makefile
+++ b/inet/Makefile
@@ -23,7 +23,7 @@ subdir	:= inet
 
 headers	:= netinet/ether.h netinet/in.h netinet/if_ether.h \
 	   netinet/tcp.h netinet/ip.h $(wildcard arpa/*.h protocols/*.h) \
-	   aliases.h
+	   aliases.h netinet/ip6.h netinet/icmp6.h
 
 distribute := netgroup.h
 
diff --git a/string/strverscmp.c b/string/strverscmp.c
index 388df75dfd..815073ecbf 100644
--- a/string/strverscmp.c
+++ b/string/strverscmp.c
@@ -22,7 +22,7 @@
 #include <ctype.h>
 
 /* states: S_N: normal, S_I: comparing integral part, S_F: comparing
-           Fractionnal parts, S_Z: idem but with leading Zeroes only */
+           fractionnal parts, S_Z: idem but with leading Zeroes only */
 #define  S_N    0x0
 #define  S_I    0x4
 #define  S_F    0x8
diff --git a/sunrpc/clnt_perr.c b/sunrpc/clnt_perr.c
index 68f3640cd7..73ec6a12e9 100644
--- a/sunrpc/clnt_perr.c
+++ b/sunrpc/clnt_perr.c
@@ -197,7 +197,7 @@ static const struct rpc_errtab rpc_errlist[] =
 char *
 clnt_sperrno (enum clnt_stat stat)
 {
-  int i;
+  size_t i;
 
   for (i = 0; i < sizeof (rpc_errlist) / sizeof (struct rpc_errtab); i++)
     {
diff --git a/sunrpc/rpc/xdr.h b/sunrpc/rpc/xdr.h
index aa1c702757..e988896196 100644
--- a/sunrpc/rpc/xdr.h
+++ b/sunrpc/rpc/xdr.h
@@ -123,16 +123,16 @@ struct XDR
 	/* put a long to " */
 	bool_t (*x_getbytes) __P ((XDR * __xdrs, caddr_t __addr, u_int __len));
 	/* get some bytes from " */
-	bool_t (*x_putbytes) __P ((XDR * __xdrs, __const caddr_t __addr,
+	bool_t (*x_putbytes) __P ((XDR * __xdrs, __const char *__addr,
 				   u_int __len));
 	/* put some bytes to " */
-	u_int (*x_getpostn) __P ((XDR * __xdrs));
+	u_int (*x_getpostn) __P ((__const XDR * __xdrs));
 	/* returns bytes off from beginning */
 	bool_t (*x_setpostn) __P ((XDR * __xdrs, u_int pos));
 	/* lets you reposition the stream */
 	long *(*x_inline) __P ((XDR * __xdrs, int len));
 	/* buf quick ptr to buffered data */
-	void (*x_destroy) __P ((XDR * __xdrs));
+	void (*x_destroy) __P ((__const XDR * __xdrs));
 	/* free privates of this xdr_stream */
       }
      *x_ops;
diff --git a/sunrpc/rpcinfo.c b/sunrpc/rpcinfo.c
index 23fb3c0d8e..7adb89332e 100644
--- a/sunrpc/rpcinfo.c
+++ b/sunrpc/rpcinfo.c
@@ -151,7 +151,7 @@ main (int argc, char **argv)
   if (errflg || function == NONE)
     {
       usage ();
-      return (1);
+      return 1;
     }
 
   switch (function)
@@ -161,7 +161,7 @@ main (int argc, char **argv)
       if (portnum != 0)
 	{
 	  usage ();
-	  return (1);
+	  return 1;
 	}
       pmapdump (argc - optind, argv + optind);
       break;
@@ -178,7 +178,7 @@ main (int argc, char **argv)
       if (portnum != 0)
 	{
 	  usage ();
-	  return (1);
+	  return 1;
 	}
       brdcst (argc - optind, argv + optind);
       break;
@@ -188,7 +188,7 @@ main (int argc, char **argv)
       break;
     }
 
-  return (0);
+  return 0;
 }
 
 static void
@@ -234,8 +234,7 @@ udpping (portnum, argc, argv)
 				    to, &sock)) == NULL)
 	{
 	  clnt_pcreateerror ("rpcinfo");
-	  printf (_ ("program %lu is not available\n"),
-		  prognum);
+	  printf (_("program %lu is not available\n"), prognum);
 	  exit (1);
 	}
       to.tv_sec = 10;
@@ -262,7 +261,7 @@ udpping (portnum, argc, argv)
 					to, &sock)) == NULL)
 	    {
 	      clnt_pcreateerror ("rpcinfo");
-	      printf (_ ("program %lu version %lu is not available\n"),
+	      printf (_("program %lu version %lu is not available\n"),
 		      prognum, MAX_VERS);
 	      exit (1);
 	    }
@@ -308,7 +307,7 @@ udpping (portnum, argc, argv)
 					to, &sock)) == NULL)
 	    {
 	      clnt_pcreateerror ("rpcinfo");
-	      printf (_ ("program %lu version %lu is not available\n"),
+	      printf (_("program %lu version %lu is not available\n"),
 		      prognum, vers);
 	      exit (1);
 	    }
@@ -331,7 +330,7 @@ udpping (portnum, argc, argv)
 				    to, &sock)) == NULL)
 	{
 	  clnt_pcreateerror ("rpcinfo");
-	  printf ("program %lu version %lu is not available\n",
+	  printf (_("program %lu version %lu is not available\n"),
 		  prognum, vers);
 	  exit (1);
 	}
@@ -381,8 +380,7 @@ tcpping (portnum, argc, argv)
 				    &sock, 0, 0)) == NULL)
 	{
 	  clnt_pcreateerror ("rpcinfo");
-	  printf (_ ("program %lu is not available\n"),
-		  prognum);
+	  printf (_("program %lu is not available\n"), prognum);
 	  exit (1);
 	}
       to.tv_sec = 10;
@@ -406,7 +404,7 @@ tcpping (portnum, argc, argv)
 					&sock, 0, 0)) == NULL)
 	    {
 	      clnt_pcreateerror ("rpcinfo");
-	      printf (_ ("program %lu version %lu is not available\n"),
+	      printf (_("program %lu version %lu is not available\n"),
 		      prognum, MAX_VERS);
 	      exit (1);
 	    }
@@ -452,7 +450,7 @@ tcpping (portnum, argc, argv)
 					&sock, 0, 0)) == NULL)
 	    {
 	      clnt_pcreateerror ("rpcinfo");
-	      printf (_ ("program %lu version %lu is not available\n"),
+	      printf (_("program %lu version %lu is not available\n"),
 		      prognum, vers);
 	      exit (1);
 	    }
@@ -475,7 +473,7 @@ tcpping (portnum, argc, argv)
 				    0, 0)) == NULL)
 	{
 	  clnt_pcreateerror ("rpcinfo");
-	  printf (_ ("program %lu version %lu is not available\n"),
+	  printf (_("program %lu version %lu is not available\n"),
 		  prognum, vers);
 	  exit (1);
 	}
@@ -509,15 +507,13 @@ pstatus (client, prognum, vers)
   if (rpcerr.re_status != RPC_SUCCESS)
     {
       clnt_perror (client, "rpcinfo");
-      printf (_ ("program %lu version %lu is not available\n"),
-	      prognum, vers);
-      return (-1);
+      printf (_("program %lu version %lu is not available\n"), prognum, vers);
+      return -1;
     }
   else
     {
-      printf (_ ("program %lu version %lu ready and waiting\n"),
-	      prognum, vers);
-      return (0);
+      printf (_("program %lu version %lu ready and waiting\n"), prognum, vers);
+      return 0;
     }
 }
 
@@ -557,24 +553,24 @@ pmapdump (argc, argv)
   if ((client = clnttcp_create (&server_addr, PMAPPROG,
 				PMAPVERS, &socket, 50, 500)) == NULL)
     {
-      clnt_pcreateerror (_ ("rpcinfo: can't contact portmapper"));
+      clnt_pcreateerror (_("rpcinfo: can't contact portmapper"));
       exit (1);
     }
   if (clnt_call (client, PMAPPROC_DUMP, (xdrproc_t) xdr_void, NULL,
 		 (xdrproc_t) xdr_pmaplist, (caddr_t) &head,
 		 minutetimeout) != RPC_SUCCESS)
     {
-      fprintf (stderr, _ ("rpcinfo: can't contact portmapper: "));
+      fputs (_("rpcinfo: can't contact portmapper: "), stderr);
       clnt_perror (client, "rpcinfo");
       exit (1);
     }
   if (head == NULL)
     {
-      printf (_ ("No remote programs registered.\n"));
+      fputs (_("No remote programs registered.\n"), stdout);
     }
   else
     {
-      printf (_ ("   program vers proto   port\n"));
+      fputs (_("   program vers proto   port\n"), stdout);
       for (; head != NULL; head = head->pml_next)
 	{
 	  printf ("%10ld%5ld",
@@ -613,8 +609,8 @@ reply_proc (res, who)
   hp = gethostbyaddr ((char *) &who->sin_addr, sizeof who->sin_addr,
 		      AF_INET);
   printf ("%s %s\n", inet_ntoa (who->sin_addr),
-	  (hp == NULL) ? _ ("(unknown)") : hp->h_name);
-  return (FALSE);
+	  (hp == NULL) ? _("(unknown)") : hp->h_name);
+  return FALSE;
 }
 
 static void
@@ -637,7 +633,7 @@ brdcst (argc, argv)
 			     (resultproc_t) reply_proc);
   if ((rpc_stat != RPC_SUCCESS) && (rpc_stat != RPC_TIMEDOUT))
     {
-      fprintf (stderr, _ ("rpcinfo: broadcast failed: %s\n"),
+      fprintf (stderr, _("rpcinfo: broadcast failed: %s\n"),
 	       clnt_sperrno (rpc_stat));
       exit (1);
     }
@@ -658,14 +654,14 @@ deletereg (argc, argv)
     }
   if (getuid ())
     {				/* This command allowed only to root */
-      fprintf (stderr, "Sorry. You are not root\n");
+      fputs (_("Sorry. You are not root\n"), stderr);
       exit (1);
     }
   prog_num = getprognum (argv[0]);
   version_num = getvers (argv[1]);
   if ((pmap_unset (prog_num, version_num)) == 0)
     {
-      fprintf (stderr, _ ("rpcinfo: Could not delete registration for prog %s version %s\n"),
+      fprintf (stderr, _("rpcinfo: Could not delete registration for prog %s version %s\n"),
 	       argv[0], argv[1]);
       exit (1);
     }
@@ -674,11 +670,13 @@ deletereg (argc, argv)
 static void
 usage ()
 {
-  fprintf (stderr, _ ("Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"));
-  fprintf (stderr, _ ("       rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"));
-  fprintf (stderr, _ ("       rpcinfo -p [ host ]\n"));
-  fprintf (stderr, _ ("       rpcinfo -b prognum versnum\n"));
-  fprintf (stderr, _ ("       rpcinfo -d prognum versnum\n"));
+  fputs (_("Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"),
+	 stderr);
+  fputs (_("       rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"),
+	 stderr);
+  fputs (_("       rpcinfo -p [ host ]\n"), stderr);
+  fputs (_("       rpcinfo -b prognum versnum\n"), stderr);
+  fputs (_("       rpcinfo -d prognum versnum\n"), stderr);
 }
 
 static u_long
@@ -693,8 +691,7 @@ getprognum (arg)
       rpc = getrpcbyname (arg);
       if (rpc == NULL)
 	{
-	  fprintf (stderr, _ ("rpcinfo: %s is unknown service\n"),
-		   arg);
+	  fprintf (stderr, _("rpcinfo: %s is unknown service\n"), arg);
 	  exit (1);
 	}
       prognum = rpc->r_number;
@@ -704,7 +701,7 @@ getprognum (arg)
       prognum = (u_long) atoi (arg);
     }
 
-  return (prognum);
+  return prognum;
 }
 
 static u_long
@@ -714,7 +711,7 @@ getvers (arg)
   register u_long vers;
 
   vers = (int) atoi (arg);
-  return (vers);
+  return vers;
 }
 
 static void
@@ -726,11 +723,12 @@ get_inet_address (addr, host)
 
   bzero ((char *) addr, sizeof *addr);
   addr->sin_addr.s_addr = (u_long) inet_addr (host);
-  if (addr->sin_addr.s_addr == -1 || addr->sin_addr.s_addr == 0)
+  if (addr->sin_addr.s_addr == INADDR_NONE
+      || addr->sin_addr.s_addr == INADDR_ANY)
     {
       if ((hp = gethostbyname (host)) == NULL)
 	{
-	  fprintf (stderr, _ ("rpcinfo: %s is unknown host\n"),
+	  fprintf (stderr, _("rpcinfo: %s is unknown host\n"),
 		   host);
 	  exit (1);
 	}
diff --git a/sunrpc/rpcsvc/rusers.x b/sunrpc/rpcsvc/rusers.x
index fdd1890e20..716098367f 100644
--- a/sunrpc/rpcsvc/rusers.x
+++ b/sunrpc/rpcsvc/rusers.x
@@ -85,6 +85,8 @@ program RUSERSPROG {
 %extern "C" {
 %#endif
 %
+%#include <rpc/xdr.h>
+%
 %/*
 % * The following structures are used by version 2 of the rusersd protocol.
 % * They were not developed with rpcgen, so they do not appear as RPCL.
@@ -110,7 +112,7 @@ program RUSERSPROG {
 %       int uta_cnt;
 %};
 %typedef struct utmparr utmparr;
-%int xdr_utmparr();
+%int xdr_utmparr(XDR *xdrs, struct utmparr *objp);
 %
 %struct utmpidle {
 %	struct ru_utmp ui_utmp;
@@ -122,7 +124,7 @@ program RUSERSPROG {
 %	int uia_cnt;
 %};
 %
-%int xdr_utmpidlearr();
+%int xdr_utmpidlearr(XDR *xdrs, struct utmpidlearr *objp);
 %
 %#ifdef	__cplusplus
 %}
diff --git a/sunrpc/xdr_mem.c b/sunrpc/xdr_mem.c
index 8e88e41ea2..a67713e669 100644
--- a/sunrpc/xdr_mem.c
+++ b/sunrpc/xdr_mem.c
@@ -49,7 +49,7 @@ static char sccsid[] = "@(#)xdr_mem.c 1.19 87/08/11 Copyr 1984 Sun Micro";
 static bool_t xdrmem_getlong (XDR *, long *);
 static bool_t xdrmem_putlong (XDR *, const long *);
 static bool_t xdrmem_getbytes (XDR *, caddr_t, u_int);
-static bool_t xdrmem_putbytes (XDR *, const caddr_t, u_int);
+static bool_t xdrmem_putbytes (XDR *, const char *, u_int);
 static u_int xdrmem_getpos (const XDR *);
 static bool_t xdrmem_setpos (XDR *, u_int);
 static long *xdrmem_inline (XDR *, int);
@@ -158,7 +158,7 @@ xdrmem_getbytes (xdrs, addr, len)
 static bool_t
 xdrmem_putbytes (xdrs, addr, len)
      XDR *xdrs;
-     const caddr_t addr;
+     const char *addr;
      u_int len;
 {
 
diff --git a/sunrpc/xdr_rec.c b/sunrpc/xdr_rec.c
index 66b33f8456..e76feeb991 100644
--- a/sunrpc/xdr_rec.c
+++ b/sunrpc/xdr_rec.c
@@ -56,11 +56,11 @@ static char sccsid[] = "@(#)xdr_rec.c 1.21 87/08/11 Copyr 1984 Sun Micro";
 static bool_t xdrrec_getlong (XDR *, long *);
 static bool_t xdrrec_putlong (XDR *, const long *);
 static bool_t xdrrec_getbytes (XDR *, caddr_t, u_int);
-static bool_t xdrrec_putbytes (XDR *, const caddr_t, u_int);
-static u_int xdrrec_getpos (XDR *);
+static bool_t xdrrec_putbytes (XDR *, const char *, u_int);
+static u_int xdrrec_getpos (const XDR *);
 static bool_t xdrrec_setpos (XDR *, u_int);
 static long *xdrrec_inline (XDR *, int);
-static void xdrrec_destroy (XDR *);
+static void xdrrec_destroy (const XDR *);
 
 static const struct xdr_ops xdrrec_ops =
 {
@@ -276,7 +276,7 @@ xdrrec_getbytes (xdrs, addr, len)
 static bool_t
 xdrrec_putbytes (xdrs, addr, len)
      XDR *xdrs;
-     const caddr_t addr;
+     const char *addr;
      u_int len;
 {
   RECSTREAM *rstrm = (RECSTREAM *) xdrs->x_private;
@@ -301,7 +301,7 @@ xdrrec_putbytes (xdrs, addr, len)
 }
 
 static u_int
-xdrrec_getpos (XDR *xdrs)
+xdrrec_getpos (const XDR *xdrs)
 {
   RECSTREAM *rstrm = (RECSTREAM *) xdrs->x_private;
   long pos;
@@ -403,7 +403,7 @@ xdrrec_inline (XDR *xdrs, int len)
 
 static void
 xdrrec_destroy (xdrs)
-     XDR *xdrs;
+     const XDR *xdrs;
 {
   RECSTREAM *rstrm = (RECSTREAM *) xdrs->x_private;
 
diff --git a/sunrpc/xdr_stdio.c b/sunrpc/xdr_stdio.c
index ddd726d8cb..67d9db9053 100644
--- a/sunrpc/xdr_stdio.c
+++ b/sunrpc/xdr_stdio.c
@@ -48,11 +48,11 @@ static char sccsid[] = "@(#)xdr_stdio.c 1.16 87/08/11 Copyr 1984 Sun Micro";
 static bool_t xdrstdio_getlong (XDR *, long *);
 static bool_t xdrstdio_putlong (XDR *, const long *);
 static bool_t xdrstdio_getbytes (XDR *, caddr_t, u_int);
-static bool_t xdrstdio_putbytes (XDR *, const caddr_t, u_int);
-static u_int xdrstdio_getpos (XDR *);
+static bool_t xdrstdio_putbytes (XDR *, const char *, u_int);
+static u_int xdrstdio_getpos (const XDR *);
 static bool_t xdrstdio_setpos (XDR *, u_int);
 static long *xdrstdio_inline (XDR *, int);
-static void xdrstdio_destroy (XDR *);
+static void xdrstdio_destroy (const XDR *);
 
 /*
  * Ops vector for stdio type XDR
@@ -94,7 +94,7 @@ xdrstdio_create (xdrs, file, op)
  */
 static void
 xdrstdio_destroy (xdrs)
-     XDR *xdrs;
+     const XDR *xdrs;
 {
   (void) fflush ((FILE *) xdrs->x_private);
   /* xx should we close the file ?? */
@@ -137,7 +137,7 @@ xdrstdio_getbytes (xdrs, addr, len)
 }
 
 static bool_t
-xdrstdio_putbytes (XDR *xdrs, const caddr_t addr, u_int len)
+xdrstdio_putbytes (XDR *xdrs, const char *addr, u_int len)
 {
   if ((len != 0) && (fwrite (addr, (int) len, 1, (FILE *) xdrs->x_private) != 1))
     return FALSE;
@@ -145,7 +145,7 @@ xdrstdio_putbytes (XDR *xdrs, const caddr_t addr, u_int len)
 }
 
 static u_int
-xdrstdio_getpos (XDR *xdrs)
+xdrstdio_getpos (const XDR *xdrs)
 {
   return (u_int) ftell ((FILE *) xdrs->x_private);
 }
diff --git a/sysdeps/generic/netinet/icmp6.h b/sysdeps/generic/netinet/icmp6.h
new file mode 100644
index 0000000000..f41cdfeeeb
--- /dev/null
+++ b/sysdeps/generic/netinet/icmp6.h
@@ -0,0 +1,203 @@
+/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 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 General Public License as published by
+   the Free Software Foundation; either version 2, 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 General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _NETINET_ICMP6_H
+#define _NETINET_ICMP6_H 1
+
+#include <sys/types.h>
+
+#define ICMPV6_FILTER 1
+
+#define ICMPV6_FILTER_BLOCK		1
+#define ICMPV6_FILTER_PASS		2
+#define ICMPV6_FILTER_BLOCKOTHERS	3
+#define ICMPV6_FILTER_PASSONLY		4
+
+struct icmpv6_filter 
+  {
+    u_int32_t data[8];
+  };
+
+struct icmpv6hdr 
+  {
+    u_int8_t icmpv6_type;   /* type field */
+    u_int8_t icmpv6_code;   /* code field */
+    u_int16_t icmpv6_cksum;  /* checksum field */
+    union 
+      {
+	u_int32_t un_data32[1]; /* type-specific field */
+	u_int16_t un_data16[2]; /* type-specific field */
+	u_int8_t un_data8[4];  /* type-specific field */
+      } icmpv6_dataun;
+  };
+
+#define icmpv6_data32    icmpv6_dataun.un_data32
+#define icmpv6_data16    icmpv6_dataun.un_data16
+#define icmpv6_data8     icmpv6_dataun.un_data8
+#define icmpv6_pptr      icmpv6_data32[0]  /* parameter prob */
+#define icmpv6_mtu       icmpv6_data32[0]  /* packet too big */
+#define icmpv6_id        icmpv6_data16[0]  /* echo request/reply */
+#define icmpv6_seq       icmpv6_data16[1]  /* echo request/reply */
+#define icmpv6_maxdelay  icmpv6_data16[0]  /* mcast group membership */
+
+#define ICMPV6_DEST_UNREACH             1
+#define ICMPV6_PACKET_TOOBIG            2
+#define ICMPV6_TIME_EXCEEDED            3
+#define ICMPV6_PARAMETER_PROBLEM        4
+#define ICMPV6_INFOMSG_MASK             128 /* message is info if bit set */
+#define ICMPV6_ECHOREQUEST              128
+#define ICMPV6_ECHOREPLY                129
+#define ICMPV6_MGM_QUERY                130
+#define ICMPV6_MGM_REPORT               131
+#define ICMPV6_MGM_REDUCTION            132
+
+#define ICMPV6_DEST_UNREACH_NOROUTE	  0
+#define ICMPV6_DEST_UNREACH_ADMIN	  1 /* administratively prohibited */
+#define ICMPV6_DEST_UNREACH_NOTNEIGHBOR   2 /* not a neighbor (and must be) */
+#define ICMPV6_DEST_UNREACH_ADDR          3
+#define ICMPV6_DEST_UNREACH_NOPORT        4
+#define ICMPV6_TIME_EXCEED_HOPS           0 /* Hop Limit == 0 in transit */
+#define ICMPV6_TIME_EXCEED_REASSEMBLY     1 /* Reassembly time out */
+#define ICMPV6_PARAMPROB_HEADER           0 /* erroneous header field */
+#define ICMPV6_PARAMPROB_NEXTHEADER       1 /* unrecognized Next Header */
+#define ICMPV6_PARAMPROB_OPTION           2 /* unrecognized option */
+
+#if defined(__OPTIMIZE__)
+#include <asm/bitops.h>
+
+#define ICMPV6_FILTER_WILLPASS(type, filterp) \
+	(test_bit(type, filterp) == 0)
+
+#define ICMPV6_FILTER_WILLBLOCK(type, filterp) \
+	test_bit(type, filterp)
+
+#define ICMPV6_FILTER_SETPASS(type, filterp) \
+	clear_bit(type & 0x1f, &((filterp)->data[type >> 5]))
+
+#define ICMPV6_FILTER_SETBLOCK(type, filterp) \
+	set_bit(type & 0x1f, &((filterp)->data[type >> 5]))
+#else 
+#define ICMPV6_FILTER_WILLPASS(type, filterp) \
+	((((filterp)->data[(type) >> 5]) & (1 << ((type) & 31))) == 0)
+
+#define ICMPV6_FILTER_WILLBLOCK(type, filterp) \
+	((((filterp)->data[(type) >> 5]) & (1 << ((type) & 31))) != 0)
+
+#define ICMPV6_FILTER_SETPASS(type, filterp) \
+	((((filterp)->data[(type) >> 5]) &= ~(1 << ((type) & 31))))
+
+#define ICMPV6_FILTER_SETBLOCK(type, filterp) \
+	((((filterp)->data[(type) >> 5]) |=  (1 << ((type) & 31))))
+#endif
+
+#define ICMPV6_FILTER_SETPASSALL(filterp) \
+	memset(filterp, 0, sizeof(struct icmpv6_filter));
+
+#define ICMPV6_FILTER_SETBLOCKALL(filterp) \
+	memset(filterp, 0xFF, sizeof(struct icmpv6_filter));
+
+#define ND6_ROUTER_SOLICITATION		133
+#define ND6_ROUTER_ADVERTISEMENT	134
+#define ND6_NEIGHBOR_SOLICITATION	135
+#define ND6_NEIGHBOR_ADVERTISEMENT	136
+#define ND6_REDIRECT			137
+
+enum nd6_option 
+  {
+    ND6_OPT_SOURCE_LINKADDR=1,
+    ND6_OPT_TARGET_LINKADDR=2,
+    ND6_OPT_PREFIX_INFORMATION=3,
+    ND6_OPT_REDIRECTED_HEADER=4,
+    ND6_OPT_MTU=5,
+    ND6_OPT_ENDOFLIST=256
+  };
+
+struct nd6_router_solicit      /* router solicitation */
+  {
+    struct icmpv6hdr		rsol_hdr;
+  };
+
+#define rsol_type		rsol_hdr.icmpv6_type
+#define rsol_code		rsol_hdr.icmpv6_code
+#define rsol_cksum		rsol_hdr.icmpv6_cksum
+#define rsol_reserved		rsol_hdr.icmpv6_data32[0]
+
+struct nd6_router_advert 
+  {
+    struct icmpv6hdr	radv_hdr;
+    u_int32_t		radv_reachable;	 /* reachable time	*/
+    u_int32_t		radv_retransmit; /* reachable retransmit time */
+  };
+
+#define radv_type		radv_hdr.icmpv6_type
+#define radv_code		radv_hdr.icmpv6_code
+#define radv_cksum		radv_hdr.icmpv6_cksum
+#define radv_maxhoplimit	radv_hdr.icmpv6_data8[0]
+#define radv_m_o_res		radv_hdr.icmpv6_data8[1]
+#define ND6_RADV_M_BIT		0x80
+#define ND6_RADV_O_BIT		0x40
+#define radv_router_lifetime	radv_hdr.icmpv6_data16[1]
+
+struct nd6_nsolicitation 	/* neighbor solicitation */
+  {
+    struct icmpv6hdr	nsol6_hdr;
+    struct in6_addr	nsol6_target;
+  };
+
+struct nd6_nadvertisement 	/* neighbor advertisement */
+  {
+    struct icmpv6hdr	nadv6_hdr;
+    struct in6_addr	nadv6_target;
+  };
+
+#define nadv6_flags			nadv6_hdr.icmpv6_data32[0]
+#define ND6_NADVERFLAG_ISROUTER		0x80
+#define ND6_NADVERFLAG_SOLICITED	0x40
+#define ND6_NADVERFLAG_OVERRIDE		0x20
+
+struct nd6_redirect            /* redirect */
+  {
+    struct icmpv6hdr	redirect_hdr;
+    struct in6_addr	redirect_target;
+    struct in6_addr	redirect_destination;
+  };
+
+struct nd6_opt_prefix_info     /* prefix information */
+  {
+    u_int8_t		opt_type;
+    u_int8_t		opt_length;
+    u_int8_t		opt_prefix_length;
+    u_int8_t		opt_l_a_res;
+    u_int32_t		opt_valid_life;
+    u_int32_t		opt_preferred_life;
+    u_int32_t		opt_reserved2;
+    struct in6_addr	opt_prefix;
+  };
+
+#define ND6_OPT_PI_L_BIT	0x80
+#define ND6_OPT_PI_A_BIT	0x40
+
+struct nd6_opt_mtu 		/* MTU option */
+  {
+    u_int8_t		opt_type;
+    u_int8_t		opt_length;
+    u_int16_t		opt_reserved;
+    u_int32_t		opt_mtu;
+  };
+
+#endif /* _NETINET6_ICMPV6_H */
diff --git a/sysdeps/generic/netinet/ip6.h b/sysdeps/generic/netinet/ip6.h
new file mode 100644
index 0000000000..487cafa374
--- /dev/null
+++ b/sysdeps/generic/netinet/ip6.h
@@ -0,0 +1,44 @@
+/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 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 General Public License as published by
+   the Free Software Foundation; either version 2, 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 General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _NETINET_IP6_H
+#define _NETINET_IP6_H 1
+
+#include <netinet/in.h>
+#include <endian.h>
+
+struct ipv6hdr {
+#if (__BYTE_ORDER == __LITTLE_ENDIAN)
+  u_int8_t ipv6_version:4;
+  u_int8_t ipv6_priority:4; /* going away? */
+  u_int32_t ipv6_flowid:24;
+#elif (__BYTE_ORDER == __BIG_ENDIAN)
+  u_int32_t ipv6_flowid:24;
+  u_int8_t ipv6_priority:4; /* going away? */
+  u_int8_t ipv6_version:4;
+#else
+#error  Unknown endianness
+#endif
+  u_int16_t ipv6_len;
+  u_int8_t ipv6_nextheader;
+  u_int8_t ipv6_hoplimit;
+  struct in6_addr ipv6_src;
+  struct in6_addr ipv6_dst;
+};
+
+#endif /* _NETINET_IP6_H */
diff --git a/sysdeps/standalone/arm/errnos.h b/sysdeps/standalone/arm/errnos.h
index 0b635e649d..428fe9eb77 100644
--- a/sysdeps/standalone/arm/errnos.h
+++ b/sysdeps/standalone/arm/errnos.h
@@ -44,6 +44,8 @@ Cambridge, MA 02139, USA.  */
 #define EILSEQ		16
 #define ENOEXEC		17
 #define ENOENT		18
+#define EPROTOTYPE	19
+#define ESRCH		20
 #endif
 
 #define __set_errno(val) errno = (val)
diff --git a/sysdeps/stub/accept.c b/sysdeps/stub/accept.c
index e9a774c026..6934397925 100644
--- a/sysdeps/stub/accept.c
+++ b/sysdeps/stub/accept.c
@@ -27,7 +27,7 @@ Cambridge, MA 02139, USA.  */
 int
 accept (fd, addr, addr_len)
      int fd;
-     struct sockaddr *addr;
+     __SOCKADDR_ARG addr;
      size_t *addr_len;
 {
   __set_errno (ENOSYS);
diff --git a/sysdeps/stub/bind.c b/sysdeps/stub/bind.c
index 7f4d8145b8..22944c393b 100644
--- a/sysdeps/stub/bind.c
+++ b/sysdeps/stub/bind.c
@@ -23,7 +23,7 @@ Cambridge, MA 02139, USA.  */
 int
 bind (fd, addr, len)
      int fd;
-     const struct sockaddr *addr;
+     __CONST_SOCKADDR_ARG addr;
      size_t len;
 {
   __set_errno (ENOSYS);
diff --git a/sysdeps/stub/connect.c b/sysdeps/stub/connect.c
index 0d642cbcea..be10fc3345 100644
--- a/sysdeps/stub/connect.c
+++ b/sysdeps/stub/connect.c
@@ -26,7 +26,7 @@ Cambridge, MA 02139, USA.  */
 int
 connect (fd, addr, len)
      int fd;
-     const struct sockaddr *addr;
+     __CONST_SOCKADDR_ARG addr;
      size_t len;
 {
   __set_errno (ENOSYS);
diff --git a/sysdeps/stub/direntry.h b/sysdeps/stub/direntry.h
index 4b22f31bd6..2f7dca78aa 100644
--- a/sysdeps/stub/direntry.h
+++ b/sysdeps/stub/direntry.h
@@ -20,4 +20,5 @@
 struct dirent
   {
     char d_name[1];		/* Variable length.  */
+    int d_fileno;
   };
diff --git a/sysdeps/stub/getpeername.c b/sysdeps/stub/getpeername.c
index 85256ad7ed..a2eb4ad79c 100644
--- a/sysdeps/stub/getpeername.c
+++ b/sysdeps/stub/getpeername.c
@@ -24,7 +24,7 @@ Cambridge, MA 02139, USA.  */
 int
 getpeername (fd, addr, len)
      int fd;
-     struct sockaddr *addr;
+     __SOCKADDR_ARG addr;
      size_t *len;
 {
   __set_errno (ENOSYS);
diff --git a/sysdeps/stub/getsockname.c b/sysdeps/stub/getsockname.c
index 17bb2b8a24..517ccfea17 100644
--- a/sysdeps/stub/getsockname.c
+++ b/sysdeps/stub/getsockname.c
@@ -23,7 +23,7 @@ Cambridge, MA 02139, USA.  */
 int
 getsockname (fd, addr, len)
      int fd;
-     struct sockaddr *addr;
+     __SOCKADDR_ARG addr;
      size_t *len;
 {
   __set_errno (ENOSYS);
diff --git a/sysdeps/stub/readv.c b/sysdeps/stub/readv.c
index a3240df239..8dd22d9649 100644
--- a/sysdeps/stub/readv.c
+++ b/sysdeps/stub/readv.c
@@ -29,7 +29,7 @@ int
 __readv (fd, vector, count)
      int fd;
      const struct iovec *vector;
-     size_t count;
+     int count;
 {
   __set_errno (ENOSYS);
   return -1;
diff --git a/sysdeps/stub/recvfrom.c b/sysdeps/stub/recvfrom.c
index 47973ed896..e81946cb90 100644
--- a/sysdeps/stub/recvfrom.c
+++ b/sysdeps/stub/recvfrom.c
@@ -28,7 +28,7 @@ recvfrom (fd, buf, n, flags, addr, addr_len)
      void *buf;
      size_t n;
      int flags;
-     struct sockaddr *addr;
+     __SOCKADDR_ARG addr;
      size_t *addr_len;
 {
   __set_errno (ENOSYS);
diff --git a/sysdeps/stub/send.c b/sysdeps/stub/send.c
index e921fd74bd..fbf8186ed5 100644
--- a/sysdeps/stub/send.c
+++ b/sysdeps/stub/send.c
@@ -23,7 +23,7 @@ Cambridge, MA 02139, USA.  */
 int
 send (fd, buf, n, flags)
      int fd;
-     void *buf;
+     __const __ptr_t buf;
      size_t n;
      int flags;
 {
diff --git a/sysdeps/stub/sendto.c b/sysdeps/stub/sendto.c
index 26353919a1..a05717ae68 100644
--- a/sysdeps/stub/sendto.c
+++ b/sysdeps/stub/sendto.c
@@ -24,10 +24,10 @@ Cambridge, MA 02139, USA.  */
 int
 sendto (fd, buf, n, flags, addr, addr_len)
      int fd;
-     void *buf;
+     __const __ptr_t buf;
      size_t n;
      int flags;
-     const struct sockaddr *addr;
+     __CONST_SOCKADDR_ARG addr;
      size_t addr_len;
 {
   __set_errno (ENOSYS);
diff --git a/sysdeps/stub/ttyname_r.c b/sysdeps/stub/ttyname_r.c
index 7a05629c43..3c0306caaa 100644
--- a/sysdeps/stub/ttyname_r.c
+++ b/sysdeps/stub/ttyname_r.c
@@ -26,7 +26,7 @@ int
 ttyname_r (fd, buf, buflen)
      int fd;
      char *buf;
-     int buflen;
+     size_t buflen;
 {
   __set_errno (ENOSYS);
   return -1;
diff --git a/sysdeps/stub/writev.c b/sysdeps/stub/writev.c
index 1fd7c2ec73..d18d73cddc 100644
--- a/sysdeps/stub/writev.c
+++ b/sysdeps/stub/writev.c
@@ -29,7 +29,7 @@ int
 __writev (fd, vector, count)
      int fd;
      const struct iovec *vector;
-     size_t count;
+     int count;
 {
   __set_errno (ENOSYS);
   return -1;
diff --git a/sysdeps/unix/arm/sysdep.h b/sysdeps/unix/arm/sysdep.h
index 1c580731ba..b1860dd443 100644
--- a/sysdeps/unix/arm/sysdep.h
+++ b/sysdeps/unix/arm/sysdep.h
@@ -19,7 +19,7 @@ Cambridge, MA 02139, USA.  */
 #include <sysdeps/unix/sysdep.h>
 #include <sysdeps/arm/sysdep.h>
 
-/* Some definitions to allow the assembler in sysdeps/unix/*.S to build
+/* Some definitions to allow the assembler in sysdeps/unix/ to build
    without needing ARM-specific versions of all the files.  */
 
 #define ret		RETINSTR(mov, pc, r14)
diff --git a/sysdeps/unix/sysv/linux/arm/profil-counter.h b/sysdeps/unix/sysv/linux/arm/profil-counter.h
new file mode 100644
index 0000000000..a915da7788
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/arm/profil-counter.h
@@ -0,0 +1,26 @@
+/* Low-level statistical profiling support function.  Linux/ARM version.
+   Copyright (C) 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
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <sigcontext.h>
+
+void
+profil_counter (int signo, struct sigcontext sc)
+{
+  profil_count ((void *) sc.eip);
+}
diff --git a/sysdeps/unix/sysv/linux/arm/syscall.S b/sysdeps/unix/sysv/linux/arm/syscall.S
index 7a87278303..bc2bc7dbaa 100644
--- a/sysdeps/unix/sysv/linux/arm/syscall.S
+++ b/sysdeps/unix/sysv/linux/arm/syscall.S
@@ -1,4 +1,4 @@
-/* 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
@@ -26,10 +26,10 @@ ENTRY (syscall)
 
 	/* Normally encoding the system call number in the instruction is
 	   good.  But we pay the price here.  */
-	
+
 	sub sp, sp, $0xc		@ get 3 words on the stack
 	orr r0, r0, $0xef000000		@ make up a SWI instruction
-	orr r0, r0, $SWI_BASE  
+	orr r0, r0, $SWI_BASE
 	str r0, [sp]
 	ldr r0, _reti
 	str r0, [sp, $4]
@@ -43,5 +43,5 @@ _ret:	add sp, sp, $0xc
 	RETINSTR(mov, pc, r14)
 
 _reti:	.word	0xe51ff004	@ ldr pc, [pc, $4]
-	
+
 PSEUDO_END (syscall)
diff --git a/sysdeps/unix/sysv/linux/arm/sysdep.h b/sysdeps/unix/sysv/linux/arm/sysdep.h
index 6478a5d182..0aa085d351 100644
--- a/sysdeps/unix/sysv/linux/arm/sysdep.h
+++ b/sysdeps/unix/sysv/linux/arm/sysdep.h
@@ -1,22 +1,22 @@
 /* Copyright (C) 1992, 93, 95, 96, 97 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
-Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>, August 1995.
-ARM changes by Philip Blundell, <pjb27@cam.ac.uk>, May 1997. 
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>, August 1995.
+   ARM changes by Philip Blundell, <pjb27@cam.ac.uk>, May 1997.
 
-The GNU C Library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
 
-The GNU C Library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-Library General Public License for more details.
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
 
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB.  If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA.  */
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 #ifndef _LINUX_ARM_SYSDEP_H
 #define _LINUX_ARM_SYSDEP_H 1
@@ -61,12 +61,12 @@ Cambridge, MA 02139, USA.  */
 #ifndef PIC
 #define SYSCALL_ERROR_HANDLER	/* Nothing here; code in sysdep.S is used.  */
 #else
-#error Aiee 
+#error Aiee
 #endif	/* PIC */
 
 #undef	DO_CALL
 #define DO_CALL(args, syscall_name)			      		      \
-    swi SYS_ify (syscall_name);					      
+    swi SYS_ify (syscall_name);
 
 #endif	/* ASSEMBLER */
 
diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h
index 7418982c2a..a38e4b3531 100644
--- a/sysdeps/unix/sysv/linux/i386/sysdep.h
+++ b/sysdeps/unix/sysv/linux/i386/sysdep.h
@@ -1,21 +1,21 @@
-/* Copyright (C) 1992, 93, 95, 96 Free Software Foundation, Inc.
-This file is part of the GNU C Library.
-Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>, August 1995.
-
-The GNU C Library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Library General Public License as
-published by the Free Software Foundation; either version 2 of the
-License, or (at your option) any later version.
-
-The GNU C Library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-Library General Public License for more details.
-
-You should have received a copy of the GNU Library General Public
-License along with the GNU C Library; see the file COPYING.LIB.  If
-not, write to the Free Software Foundation, Inc., 675 Mass Ave,
-Cambridge, MA 02139, USA.  */
+/* Copyright (C) 1992, 93, 95, 96, 97 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>, August 1995.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 #ifndef _LINUX_I386_SYSDEP_H
 #define _LINUX_I386_SYSDEP_H 1
diff --git a/sysdeps/unix/sysv/linux/netinet/in.h b/sysdeps/unix/sysv/linux/netinet/in.h
index 451f8f5a20..b0c793e7cf 100644
--- a/sysdeps/unix/sysv/linux/netinet/in.h
+++ b/sysdeps/unix/sysv/linux/netinet/in.h
@@ -301,7 +301,7 @@ extern u_int16_t htons __P ((u_int16_t __hostshort));
          (((u_int32_t *)(a))[2] == 0) && (ntohl(((u_int32_t *)(a))[3]) > 1))
 
 
-/* Bind socket to a priviledged IP port.  */
+/* Bind socket to a privileged IP port.  */
 extern int bindresvport __P ((int __sockfd, struct sockaddr_in *__sin));
 
 
diff --git a/sysdeps/unix/sysv/linux/shmat.c b/sysdeps/unix/sysv/linux/shmat.c
index 070b00c30f..9d36b26aa2 100644
--- a/sysdeps/unix/sysv/linux/shmat.c
+++ b/sysdeps/unix/sysv/linux/shmat.c
@@ -32,7 +32,7 @@ shmat (shmid, shmaddr, shmflg)
   int retval;
   unsigned long raddr;
 
-  retval = __ipc (IPCOP_shmat, shmid, shmflg, (int) &raddr, shmaddr);
+  retval = __ipc (IPCOP_shmat, shmid, shmflg, (int) &raddr, (void *) shmaddr);
   return ((unsigned long int) retval > -(unsigned long int) SHMLBA
 	  ? (void *) retval : (void *) raddr);
 }
diff --git a/sysdeps/unix/sysv/linux/socketbits.h b/sysdeps/unix/sysv/linux/socketbits.h
index 101afc268c..e60f903fc5 100644
--- a/sysdeps/unix/sysv/linux/socketbits.h
+++ b/sysdeps/unix/sysv/linux/socketbits.h
@@ -158,9 +158,13 @@ struct cmsghdr
 #endif
 #define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg)
 #define CMSG_FIRSTHDR(mhdr) \
-  ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr)			      \
+  ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr)		      \
    ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) NULL)
-
+#define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) \
+			 & ~(sizeof (size_t) - 1))
+#define CMSG_SPACE(len) (CMSG_ALIGN (len) \
+			 + CMSG_ALIGN (sizeof (struct cmsghdr)))
+#define CMSG_LEN(len)   (CMSG_ALIGN (sizeof (struct cmsghdr)) + (len))
 
 #ifndef _EXTERN_INLINE
 # define _EXTERN_INLINE extern __inline