summaryrefslogtreecommitdiff
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)