summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/generic/bits/byteswap.h33
-rw-r--r--sysdeps/generic/bits/sigaction.h11
-rw-r--r--sysdeps/generic/bits/sigstack.h16
-rw-r--r--sysdeps/generic/fdopen.c3
-rw-r--r--sysdeps/mach/hurd/alpha/sigreturn.c4
-rw-r--r--sysdeps/mach/hurd/alpha/trampoline.c8
-rw-r--r--sysdeps/mach/hurd/fdopen.c4
-rw-r--r--sysdeps/mach/hurd/hppa/trampoline.c8
-rw-r--r--sysdeps/mach/hurd/i386/sigreturn.c4
-rw-r--r--sysdeps/mach/hurd/i386/trampoline.c8
-rw-r--r--sysdeps/mach/hurd/mips/sigreturn.c4
-rw-r--r--sysdeps/mach/hurd/mips/trampoline.c8
-rw-r--r--sysdeps/mach/hurd/sigaltstack.c7
-rw-r--r--sysdeps/mach/hurd/sigstack.c7
-rw-r--r--sysdeps/posix/fdopen.c4
-rw-r--r--sysdeps/posix/tempname.c6
-rw-r--r--sysdeps/unix/sysv/linux/Dist2
-rw-r--r--sysdeps/unix/sysv/linux/Makefile2
-rw-r--r--sysdeps/unix/sysv/linux/__recvmsg.S5
-rw-r--r--sysdeps/unix/sysv/linux/__sendmsg.S5
-rw-r--r--sysdeps/unix/sysv/linux/bits/socket.h23
-rw-r--r--sysdeps/unix/sysv/linux/recvmsg.S4
-rw-r--r--sysdeps/unix/sysv/linux/recvmsg.c74
-rw-r--r--sysdeps/unix/sysv/linux/sendmsg.S4
-rw-r--r--sysdeps/unix/sysv/linux/sendmsg.c124
25 files changed, 101 insertions, 277 deletions
diff --git a/sysdeps/generic/bits/byteswap.h b/sysdeps/generic/bits/byteswap.h
index 04a5efe9f0..a5dd4a7db3 100644
--- a/sysdeps/generic/bits/byteswap.h
+++ b/sysdeps/generic/bits/byteswap.h
@@ -1,5 +1,5 @@
 /* Macros to swap the order of bytes in integer values.
-   Copyright (C) 1997 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -22,13 +22,34 @@
 #endif
 
 /* Swap bytes in 16 bit value.  */
-#define __bswap_16(x) \
-     ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))
+#ifdef __GNUC__
+# define __bswap_16(x) \
+    (__extension__							      \
+     ({ unsigned short int __bsx = (x);					      \
+        ((((__bsx) >> 8) & 0xff) | (((__bsx) & 0xff) << 8)); }))
+#else
+static __inline unsigned short int
+__bswap16 (unsigned short int x)
+{
+  return ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8));
+}
+#endif
 
 /* Swap bytes in 32 bit value.  */
-#define __bswap_32(x) \
-     ((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >>  8) |		      \
-      (((x) & 0x0000ff00) <<  8) | (((x) & 0x000000ff) << 24))
+#ifdef __GNUC__
+# define __bswap_32(x) \
+    (__extension__							      \
+     ({ unsigned int __bsx = (x);					      \
+        ((((__bsx) & 0xff000000) >> 24) | (((__bsx) & 0x00ff0000) >>  8) |    \
+	 (((__bsx) & 0x0000ff00) <<  8) | (((__bsx) & 0x000000ff) << 24)); }))
+#else
+static __inline unsigned int
+__bswap32 (unsigned int x)
+{
+  return ((((__bsx) & 0xff000000) >> 24) | (((__bsx) & 0x00ff0000) >>  8) |
+	  (((__bsx) & 0x0000ff00) <<  8) | (((__bsx) & 0x000000ff) << 24));
+}
+#endif
 
 #if defined __GNUC__ && __GNUC__ >= 2
 /* Swap bytes in 64 bit value.  */
diff --git a/sysdeps/generic/bits/sigaction.h b/sysdeps/generic/bits/sigaction.h
index 4499517b1a..8d75c9151e 100644
--- a/sysdeps/generic/bits/sigaction.h
+++ b/sysdeps/generic/bits/sigaction.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1992, 1996, 1997, 1998 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
@@ -40,12 +40,11 @@ struct sigaction
   };
 
 /* Bits in `sa_flags'.  */
-#ifdef	__USE_BSD
-# define SA_ONSTACK	0x1	/* Take signal on signal stack.  */
-# define SA_RESTART	0x2	/* Restart syscall on signal return.  */
-# define SA_DISABLE	0x4	/* Disable alternate signal stack.  */
+#if defined __USE_UNIX98 || defined __USE_MISC
+# define SA_ONSTACK	0x0001	/* Take signal on signal stack.  */
+# define SA_RESTART	0x0002	/* Restart syscall on signal return.  */
 #endif
-#define	SA_NOCLDSTOP	0x8	/* Don't send SIGCHLD when children stop.  */
+#define	SA_NOCLDSTOP	0x0008	/* Don't send SIGCHLD when children stop.  */
 
 
 /* Values for the HOW argument to `sigprocmask'.  */
diff --git a/sysdeps/generic/bits/sigstack.h b/sysdeps/generic/bits/sigstack.h
index 3a58e8bb58..0998256613 100644
--- a/sysdeps/generic/bits/sigstack.h
+++ b/sysdeps/generic/bits/sigstack.h
@@ -37,3 +37,19 @@ typedef struct sigaltstack
     size_t ss_size;
     int ss_flags;
   } stack_t;
+
+
+/* Possible values for `ss_flags.'.  */
+enum
+{
+  SS_ONSTACK = 0x0001,
+#define SS_ONSTACK	SS_ONSTACK
+  SS_DISABLE = 0x0004,
+#define SS_DISABLE	SS_DISABLE
+};
+    
+/* Minumum stack size for a signal handler.  */
+#define MINSIGSTKSZ	8192
+
+/* System default stack size.  */
+#define SIGSTKSZ	(MINSIGSTKSZ + 32768)
diff --git a/sysdeps/generic/fdopen.c b/sysdeps/generic/fdopen.c
index c7d7f556fa..4650c5c1ae 100644
--- a/sysdeps/generic/fdopen.c
+++ b/sysdeps/generic/fdopen.c
@@ -21,13 +21,14 @@
 
 /* Open a new stream on a given system file descriptor.  */
 FILE *
-fdopen (fd, mode)
+__fdopen (fd, mode)
      int fd;
      const char *mode;
 {
   __set_errno (ENOSYS);
   return NULL;
 }
+weak_alias (__fdopen, fdopen)
 
 stub_warning (fdopen)
 #include <stub-tag.h>
diff --git a/sysdeps/mach/hurd/alpha/sigreturn.c b/sysdeps/mach/hurd/alpha/sigreturn.c
index ff6e4edcaf..102b0231d8 100644
--- a/sysdeps/mach/hurd/alpha/sigreturn.c
+++ b/sysdeps/mach/hurd/alpha/sigreturn.c
@@ -1,5 +1,5 @@
 /* Return from signal handler in GNU C library for Hurd.  Alpha version.
-   Copyright (C) 1994, 1995, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1994, 1995, 1997, 1998 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
@@ -65,7 +65,7 @@ __sigreturn (struct sigcontext *scp)
 
   if (scp->sc_onstack)
     {
-      ss->sigaltstack.ss_flags &= ~SA_ONSTACK; /* XXX threadvars */
+      ss->sigaltstack.ss_flags &= ~SS_ONSTACK; /* XXX threadvars */
       /* XXX cannot unlock until off sigstack */
       abort ();
     }
diff --git a/sysdeps/mach/hurd/alpha/trampoline.c b/sysdeps/mach/hurd/alpha/trampoline.c
index b650478347..a1d0dfb5a7 100644
--- a/sysdeps/mach/hurd/alpha/trampoline.c
+++ b/sysdeps/mach/hurd/alpha/trampoline.c
@@ -1,5 +1,5 @@
 /* Set thread_state for sighandler, and sigcontext to recover.  Alpha version.
-   Copyright (C) 1994, 1995, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1994, 1995, 1997, 1998 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
@@ -86,10 +86,10 @@ _hurd_setup_sighandler (struct hurd_sigstate *ss, __sighandler_t handler,
     return NULL;
 
   if ((ss->actions[signo].sa_flags & SA_ONSTACK) &&
-      !(ss->sigaltstack.ss_flags & (SA_DISABLE|SA_ONSTACK)))
+      !(ss->sigaltstack.ss_flags & (SS_DISABLE|SS_ONSTACK)))
     {
       sigsp = ss->sigaltstack.ss_sp + ss->sigaltstack.ss_size;
-      ss->sigaltstack.ss_flags |= SA_ONSTACK;
+      ss->sigaltstack.ss_flags |= SS_ONSTACK;
       /* XXX need to set up base of new stack for
 	 per-thread variables, cthreads.  */
     }
@@ -114,7 +114,7 @@ _hurd_setup_sighandler (struct hurd_sigstate *ss, __sighandler_t handler,
     {
       /* Set up the sigcontext from the current state of the thread.  */
 
-      scp->sc_onstack = ss->sigaltstack.ss_flags & SA_ONSTACK ? 1 : 0;
+      scp->sc_onstack = ss->sigaltstack.ss_flags & SS_ONSTACK ? 1 : 0;
 
       /* struct sigcontext is laid out so that starting at sc_regs
 	 mimics a struct alpha_thread_state.  */
diff --git a/sysdeps/mach/hurd/fdopen.c b/sysdeps/mach/hurd/fdopen.c
index 5a3106d4a0..fcdf84e969 100644
--- a/sysdeps/mach/hurd/fdopen.c
+++ b/sysdeps/mach/hurd/fdopen.c
@@ -27,7 +27,7 @@ extern int __getmode __P ((const char *mode, __io_mode *mptr));
 
 /* Open a new stream on a given system file descriptor.  */
 FILE *
-fdopen (fd, mode)
+__fdopen (fd, mode)
      int fd;
      const char *mode;
 {
@@ -68,3 +68,5 @@ fdopen (fd, mode)
 
   return stream;
 }
+
+weak_alias (__fdopen, fdopen)
diff --git a/sysdeps/mach/hurd/hppa/trampoline.c b/sysdeps/mach/hurd/hppa/trampoline.c
index ceb16235fe..b046b945a4 100644
--- a/sysdeps/mach/hurd/hppa/trampoline.c
+++ b/sysdeps/mach/hurd/hppa/trampoline.c
@@ -1,5 +1,5 @@
 /* Set thread_state for sighandler, and sigcontext to recover.  HPPA version.
-   Copyright (C) 1995, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1995, 1997, 1998 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
@@ -75,10 +75,10 @@ _hurd_setup_sighandler (struct hurd_sigstate *ss, __sighandler_t handler,
     return NULL;
 
   if ((ss->actions[signo].sa_flags & SA_ONSTACK) &&
-      !(ss->sigaltstack.ss_flags & (SA_DISABLE|SA_ONSTACK)))
+      !(ss->sigaltstack.ss_flags & (SS_DISABLE|SS_ONSTACK)))
     {
       sigsp = ss->sigaltstack.ss_sp + ss->sigaltstack.ss_size;
-      ss->sigaltstack.ss_flags |= SA_ONSTACK;
+      ss->sigaltstack.ss_flags |= SS_ONSTACK;
       /* XXX need to set up base of new stack for
 	 per-thread variables, cthreads.  */
     }
@@ -104,7 +104,7 @@ _hurd_setup_sighandler (struct hurd_sigstate *ss, __sighandler_t handler,
 
       /* Set up the sigcontext from the current state of the thread.  */
 
-      scp->sc_onstack = ss->sigaltstack.ss_flags & SA_ONSTACK ? 1 : 0;
+      scp->sc_onstack = ss->sigaltstack.ss_flags & SS_ONSTACK ? 1 : 0;
 
       /* struct sigcontext is laid out so that starting at sc_regs mimics a
 	 struct parisc_thread_state.  */
diff --git a/sysdeps/mach/hurd/i386/sigreturn.c b/sysdeps/mach/hurd/i386/sigreturn.c
index 002a4e10a4..334351d285 100644
--- a/sysdeps/mach/hurd/i386/sigreturn.c
+++ b/sysdeps/mach/hurd/i386/sigreturn.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 92, 94, 95, 96, 97 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 92, 94, 95, 96, 97, 98 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
@@ -68,7 +68,7 @@ __sigreturn (struct sigcontext *scp)
 
   if (scp->sc_onstack)
     {
-      ss->sigaltstack.ss_flags &= ~SA_ONSTACK; /* XXX threadvars */
+      ss->sigaltstack.ss_flags &= ~SS_ONSTACK; /* XXX threadvars */
       /* XXX cannot unlock until off sigstack */
       abort ();
     }
diff --git a/sysdeps/mach/hurd/i386/trampoline.c b/sysdeps/mach/hurd/i386/trampoline.c
index 5841c60a01..4c1fa60e2e 100644
--- a/sysdeps/mach/hurd/i386/trampoline.c
+++ b/sysdeps/mach/hurd/i386/trampoline.c
@@ -1,5 +1,5 @@
 /* Set thread_state for sighandler, and sigcontext to recover.  i386 version.
-   Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1994, 1995, 1996, 1997, 1998 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
@@ -74,10 +74,10 @@ _hurd_setup_sighandler (struct hurd_sigstate *ss, __sighandler_t handler,
   state->basic.esp = state->basic.uesp;
 
   if ((ss->actions[signo].sa_flags & SA_ONSTACK) &&
-      !(ss->sigaltstack.ss_flags & (SA_DISABLE|SA_ONSTACK)))
+      !(ss->sigaltstack.ss_flags & (SS_DISABLE|SS_ONSTACK)))
     {
       sigsp = ss->sigaltstack.ss_sp + ss->sigaltstack.ss_size;
-      ss->sigaltstack.ss_flags |= SA_ONSTACK;
+      ss->sigaltstack.ss_flags |= SS_ONSTACK;
       /* XXX need to set up base of new stack for
 	 per-thread variables, cthreads.  */
     }
@@ -144,7 +144,7 @@ _hurd_setup_sighandler (struct hurd_sigstate *ss, __sighandler_t handler,
 
       /* Set up the sigcontext from the current state of the thread.  */
 
-      scp->sc_onstack = ss->sigaltstack.ss_flags & SA_ONSTACK ? 1 : 0;
+      scp->sc_onstack = ss->sigaltstack.ss_flags & SS_ONSTACK ? 1 : 0;
 
       /* struct sigcontext is laid out so that starting at sc_gs mimics a
 	 struct i386_thread_state.  */
diff --git a/sysdeps/mach/hurd/mips/sigreturn.c b/sysdeps/mach/hurd/mips/sigreturn.c
index fe38fac1df..0e775736bd 100644
--- a/sysdeps/mach/hurd/mips/sigreturn.c
+++ b/sysdeps/mach/hurd/mips/sigreturn.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998 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
@@ -64,7 +64,7 @@ __sigreturn (struct sigcontext *scp)
 
   if (scp->sc_onstack)
     {
-      ss->sigaltstack.ss_flags &= ~SA_ONSTACK; /* XXX threadvars */
+      ss->sigaltstack.ss_flags &= ~SS_ONSTACK; /* XXX threadvars */
       /* XXX cannot unlock until off sigstack */
       abort ();
     }
diff --git a/sysdeps/mach/hurd/mips/trampoline.c b/sysdeps/mach/hurd/mips/trampoline.c
index fbb7df508f..284b95c330 100644
--- a/sysdeps/mach/hurd/mips/trampoline.c
+++ b/sysdeps/mach/hurd/mips/trampoline.c
@@ -1,5 +1,5 @@
 /* Set thread_state for sighandler, and sigcontext to recover.  MIPS version.
-   Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -77,10 +77,10 @@ _hurd_setup_sighandler (struct hurd_sigstate *ss, __sighandler_t handler,
   state->basic.r16 = state->basic.r29;
 
   if ((ss->actions[signo].sa_flags & SA_ONSTACK) &&
-      !(ss->sigaltstack.ss_flags & (SA_DISABLE|SA_ONSTACK)))
+      !(ss->sigaltstack.ss_flags & (SS_DISABLE|SS_ONSTACK)))
     {
       sigsp = ss->sigaltstack.ss_sp + ss->sigaltstack.ss_size;
-      ss->sigaltstack.ss_flags |= SA_ONSTACK;
+      ss->sigaltstack.ss_flags |= SS_ONSTACK;
       /* XXX need to set up base of new stack for
 	 per-thread variables, cthreads.  */
     }
@@ -129,7 +129,7 @@ _hurd_setup_sighandler (struct hurd_sigstate *ss, __sighandler_t handler,
 
       /* Set up the sigcontext from the current state of the thread.  */
 
-      scp->sc_onstack = ss->sigaltstack.ss_flags & SA_ONSTACK ? 1 : 0;
+      scp->sc_onstack = ss->sigaltstack.ss_flags & SS_ONSTACK ? 1 : 0;
 
       /* struct sigcontext is laid out so that starting at sc_gpr
 	 mimics a struct mips_thread_state.  */
diff --git a/sysdeps/mach/hurd/sigaltstack.c b/sysdeps/mach/hurd/sigaltstack.c
index 659b6b87a8..2981796995 100644
--- a/sysdeps/mach/hurd/sigaltstack.c
+++ b/sysdeps/mach/hurd/sigaltstack.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1993, 1994, 1995, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 93, 94, 95, 97, 98 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
@@ -23,7 +23,7 @@
 /* Run signals handlers on the stack specified by SS (if not NULL).
    If OSS is not NULL, it is filled in with the old signal stack status.  */
 int
-sigaltstack (argss, oss)
+__sigaltstack (argss, oss)
      const struct sigaltstack *argss;
      struct sigaltstack *oss;
 {
@@ -40,7 +40,7 @@ sigaltstack (argss, oss)
   __spin_lock (&s->lock);
 
   if (argss != NULL &&
-      (ss.ss_flags & SA_DISABLE) && (s->sigaltstack.ss_flags & SA_ONSTACK))
+      (ss.ss_flags & SS_DISABLE) && (s->sigaltstack.ss_flags & SS_ONSTACK))
     {
       /* Can't disable a stack that is in use.  */
       __spin_unlock (&s->lock);
@@ -60,3 +60,4 @@ sigaltstack (argss, oss)
 
   return 0;
 }
+weak_alias(__sigaltstack, sigaltstack)
diff --git a/sysdeps/mach/hurd/sigstack.c b/sysdeps/mach/hurd/sigstack.c
index d6044ece04..0f5afbaf99 100644
--- a/sysdeps/mach/hurd/sigstack.c
+++ b/sysdeps/mach/hurd/sigstack.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -22,7 +22,6 @@
 
 /* Run signals handlers on the stack specified by SS (if not NULL).
    If OSS is not NULL, it is filled in with the old signal stack status.  */
-/* XXX should be __sigstack ? */
 int
 sigstack (ss, oss)
      const struct sigstack *ss;
@@ -34,13 +33,13 @@ sigstack (ss, oss)
   as.ss_size = 0;
   as.ss_flags = 0;
 
-  if (sigaltstack (&as, &oas) < 0)
+  if (__sigaltstack (&as, &oas) < 0)
     return -1;
 
   if (oss != NULL)
     {
       oss->ss_sp = oas.ss_sp;
-      oss->ss_onstack = oas.ss_flags & SA_ONSTACK;
+      oss->ss_onstack = oas.ss_flags & SS_ONSTACK;
     }
 
   return 0;
diff --git a/sysdeps/posix/fdopen.c b/sysdeps/posix/fdopen.c
index 4e7d3051eb..39d8463b70 100644
--- a/sysdeps/posix/fdopen.c
+++ b/sysdeps/posix/fdopen.c
@@ -25,7 +25,7 @@ extern int __getmode (const char *mode, __io_mode *mptr);
 
 /* Open a new stream on a given system file descriptor.  */
 FILE *
-fdopen (fd, mode)
+__fdopen (fd, mode)
      int fd;
      const char *mode;
 {
@@ -71,3 +71,5 @@ fdopen (fd, mode)
 
   return stream;
 }
+
+weak_alias (__fdopen, fdopen)
diff --git a/sysdeps/posix/tempname.c b/sysdeps/posix/tempname.c
index 6dd893e613..d49971db26 100644
--- a/sysdeps/posix/tempname.c
+++ b/sysdeps/posix/tempname.c
@@ -145,15 +145,9 @@ __gen_tempname (char *tmpl, int openit, int largefile)
 
       if (openit)
 	{
-	  /* XXX Do we want to fail on largefile if 64 bit fileops
-	     are not implemented, or just fall back to the old stuff? */
-#ifndef __stub_open64
 	  fd = (largefile
 		? __open (tmpl, O_RDWR | O_CREAT | O_EXCL, 0666)
 		: __open64 (tmpl, O_RDWR | O_CREAT | O_EXCL, 0666));
-#else
-	  fd = __open (tmpl, O_RDWR | O_CREAT | O_EXCL, 0666);
-#endif
 	  if (fd >= 0)
 	    {
 	      __set_errno (save_errno);
diff --git a/sysdeps/unix/sysv/linux/Dist b/sysdeps/unix/sysv/linux/Dist
index e813a08c14..dbe401de3f 100644
--- a/sysdeps/unix/sysv/linux/Dist
+++ b/sysdeps/unix/sysv/linux/Dist
@@ -75,7 +75,5 @@ sys/user.h
 sys/vt.h
 xstatconv.c
 getdents64.c
-__sendmsg.S
-__recvmsg.S
 getresuid.c
 getresgid.c
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index af53184cb2..b84fbed0c7 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
@@ -58,7 +58,7 @@ ifeq ($(subdir),socket)
 sysdep_headers += net/if.h net/if_ppp.h net/ppp-comp.h \
 		  net/ppp_defs.h net/if_arp.h net/route.h net/ethernet.h \
 		  net/if_slip.h net/if_packet.h
-sysdep_routines += cmsg_nxthdr sa_len __sendmsg __recvmsg
+sysdep_routines += cmsg_nxthdr sa_len
 endif
 
 ifeq ($(subdir),sunrpc)
diff --git a/sysdeps/unix/sysv/linux/__recvmsg.S b/sysdeps/unix/sysv/linux/__recvmsg.S
deleted file mode 100644
index f76cce0913..0000000000
--- a/sysdeps/unix/sysv/linux/__recvmsg.S
+++ /dev/null
@@ -1,5 +0,0 @@
-#define	socket	___syscall_recvmsg
-#define	__socket __syscall_recvmsg
-#define SOCKOP____syscall_recvmsg SOCKOP_recvmsg
-#define	NARGS	3
-#include <socket.S>
diff --git a/sysdeps/unix/sysv/linux/__sendmsg.S b/sysdeps/unix/sysv/linux/__sendmsg.S
deleted file mode 100644
index bd935bd7a9..0000000000
--- a/sysdeps/unix/sysv/linux/__sendmsg.S
+++ /dev/null
@@ -1,5 +0,0 @@
-#define	socket	___syscall_sendmsg
-#define	__socket __syscall_sendmsg
-#define SOCKOP____syscall_sendmsg SOCKOP_sendmsg
-#define	NARGS	3
-#include <socket.S>
diff --git a/sysdeps/unix/sysv/linux/bits/socket.h b/sysdeps/unix/sysv/linux/bits/socket.h
index c1f752ec29..226e332043 100644
--- a/sysdeps/unix/sysv/linux/bits/socket.h
+++ b/sysdeps/unix/sysv/linux/bits/socket.h
@@ -225,29 +225,20 @@ enum
     SCM_RIGHTS = 0x01,		/* Transfer file descriptors.  */
 #define SCM_RIGHTS SCM_RIGHTS
 #ifdef __USE_BSD
-    SCM_CREDS = 0x02,		/* BSD-compatible credentials passing.  */
-# define SCM_CREDS SCM_CREDS
+    SCM_CREDENTIALS = 0x02,     /* Credentials passing.  */
+# define SCM_CREDENTIALS SCM_CREDENTIALS
 #endif
     __SCM_CONNECT = 0x03,	/* Data array is `struct scm_connect'.  */
   };
 
-#ifdef __USE_BSD
-
-/* User visible structure for SCM_CREDS message
-   (chosen for BSD source compatibility) */
+/* User visible structure for SCM_CREDENTIALS message */
 
-# define CMGROUP_MAX 16  /* Linux does not provide this info, so it doesn't
-			    matter... use what bsd does. */
-struct cmsgcred
+struct ucred
 {
-  pid_t cmcred_pid;			/* PID of sending process.  */
-  uid_t cmcred_uid;			/* Real UID of sending process.  */
-  uid_t cmcred_euid;			/* Effective UID of sending process. */
-  gid_t cmcred_gid;			/* Real GID of sending process.  */
-  short int cmcred_ngroups;		/* Number or groups.  */
-  gid_t cmcred_groups[CMGROUP_MAX];	/* Groups.  */
+  pid_t pid;			/* PID of sending process.  */
+  uid_t uid;			/* UID of sending process.  */
+  gid_t gid;			/* GID of sending process.  */
 };
-#endif
 
 /* Get socket manipulation related informations from kernel headers.  */
 #include <asm/socket.h>
diff --git a/sysdeps/unix/sysv/linux/recvmsg.S b/sysdeps/unix/sysv/linux/recvmsg.S
new file mode 100644
index 0000000000..b4125d2caa
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/recvmsg.S
@@ -0,0 +1,4 @@
+#define	socket	recvmsg
+#define	__socket __libc_recvmsg
+#define	NARGS	3
+#include <socket.S>
diff --git a/sysdeps/unix/sysv/linux/recvmsg.c b/sysdeps/unix/sysv/linux/recvmsg.c
deleted file mode 100644
index 52a0abcf67..0000000000
--- a/sysdeps/unix/sysv/linux/recvmsg.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/* Copyright (C) 1998 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 <sys/socket.h>
-#include <errno.h>
-#include <string.h>
-
-#include <asm/posix_types.h>
-
-/* The kernel expects this structure in SCM_CREDS messages.
- * Note: sizeof(struct __kernel_ucred) <= sizeof(struct cmsgcred) must hold.
- */
-struct __kernel_ucred
-{
-  __kernel_pid_t pid;
-  __kernel_uid_t uid;
-  __kernel_gid_t gid;
-};
-
-extern int __syscall_recvmsg (int, struct msghdr *, int);
-
-int
-__libc_recvmsg (int fd, struct msghdr *message, int flags)
-{
-  struct cmsghdr *cm;
-  int ret;
-
-  ret = __syscall_recvmsg (fd, message, flags);
-
-  if (ret == -1)
-    return ret;
-
-  /* Postprocess the message control block for SCM_CREDS.  */
-  cm = CMSG_FIRSTHDR (message);
-  while (cm)
-    {
-      if (cm->cmsg_type == SCM_CREDS)
- 	{
-	  struct cmsgcred *c = (struct cmsgcred *) CMSG_DATA (cm);
-	  struct __kernel_ucred u;
-	  int i;
-	  memcpy (&u, CMSG_DATA (cm), sizeof (struct __kernel_ucred));
-
-	  c->cmcred_pid = u.pid;
-	  c->cmcred_uid = u.uid;
-	  c->cmcred_gid = u.gid;
-
-	  c->cmcred_euid = -1;
-	  c->cmcred_ngroups = 0;
-	  for (i = 0; i < CMGROUP_MAX; i++)
-	    c->cmcred_groups[i] = -1;
-	}
-      cm = CMSG_NXTHDR (message, cm);
-    }
-
-  return ret;
-}
-
-weak_alias (__libc_recvmsg, recvmsg)
diff --git a/sysdeps/unix/sysv/linux/sendmsg.S b/sysdeps/unix/sysv/linux/sendmsg.S
new file mode 100644
index 0000000000..0defce9f9e
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sendmsg.S
@@ -0,0 +1,4 @@
+#define	socket	sendmsg
+#define	__socket __libc_sendmsg
+#define	NARGS	3
+#include <socket.S>
diff --git a/sysdeps/unix/sysv/linux/sendmsg.c b/sysdeps/unix/sysv/linux/sendmsg.c
deleted file mode 100644
index 304aa6e2a1..0000000000
--- a/sysdeps/unix/sysv/linux/sendmsg.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/* Copyright (C) 1998 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 <sys/socket.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#include <asm/posix_types.h>
-
-/* The kernel expects this structure in SCM_CREDS messages.
- * Note: sizeof(struct __kernel_ucred) <= sizeof(struct cmsgcred) must hold.
- */
-struct kernel_ucred
-  {
-    __kernel_pid_t pid;
-    __kernel_uid_t uid;
-    __kernel_gid_t gid;
-  };
-
-struct credmsg
-  {
-    struct cmsghdr cm;
-    struct cmsgcred cc;
-  };
-
-struct kcredmsg
-  {
-    struct cmsghdr cm;
-    struct kernel_ucred cc;
-  };
-
-extern int __syscall_sendmsg (int, const struct msghdr *, int);
-
-/* Send a message described by MESSAGE on socket FD.
-   Returns the number of bytes sent, or -1 for errors.  */
-int
-__libc_sendmsg (int fd, const struct msghdr *message, int flags)
-{
-  struct msghdr m;
-  char *buf, *a, *b;
-  struct credmsg *cred = 0;
-  struct kcredmsg *kcred;
-  struct cmsghdr *cm;
-  long int offset = 0;
-  pid_t pid;
-
-  /* Preprocess the message control block for SCM_CREDS. */
-  if (message->msg_controllen)
-    {
-      cm = CMSG_FIRSTHDR (message);
-      while (cm)
-	{
-	  if (cm->cmsg_type == SCM_CREDS)
-	    {
-	      if (cred ||
-		  cm->cmsg_len < CMSG_LEN (sizeof (struct cmsgcred)))
-		{
-		  __set_errno (EINVAL);
-		  return -1;
-		}
-	      else
-		{
-		  cred = (struct credmsg *) cm;
-		  offset = (char *) cm - (char *) message->msg_control;
-		}
-	    }
-	  cm = CMSG_NXTHDR ((struct msghdr *) message, cm);
-	}
-
-      if (cred)
-	{
-	  buf = alloca (message->msg_controllen);
-	  memcpy (buf, message->msg_control, message->msg_controllen);
-	  kcred = (struct kcredmsg *) (buf + offset);
-	  a = (char *) kcred + CMSG_LEN (sizeof (struct kernel_ucred));
-	  b = (char *) kcred + CMSG_LEN (sizeof (struct cmsgcred));
-	  memmove (a, b, message->msg_controllen - (b - buf));
-
-	  kcred->cm.cmsg_len = CMSG_LEN (sizeof (struct kernel_ucred));
-
-	  /* Linux expects the calling process to pass in
-	     its credentials, and sanity checks them.
-	     You can send real, effective, or set- uid and gid.
-	     If the user hasn't filled in the buffer, we default to
-	     real uid and gid. */
-	  pid = __getpid ();
-	  if (cred->cc.cmcred_pid != pid)
-	    {
-	      kcred->cc.pid = pid;
-	      kcred->cc.uid = __getuid ();
-	      kcred->cc.gid = __getgid ();
-	    }
-	  else
-	    {
-	      kcred->cc.uid = cred->cc.cmcred_uid;
-	      kcred->cc.gid = cred->cc.cmcred_gid;
-	    }
-	  memcpy (&m, message, sizeof (struct msghdr));
-	  m.msg_control = buf;
-	  m.msg_controllen -= b - a;
-	  return __syscall_sendmsg (fd, &m, flags);
-	}
-    }
-  return __syscall_sendmsg (fd, message, flags);
-}
-
-weak_alias (__libc_sendmsg, sendmsg)