about summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2002-12-15 01:00:22 +0000
committerUlrich Drepper <drepper@redhat.com>2002-12-15 01:00:22 +0000
commit86b2dc4072725edb69ec4b872f9fcd17a4554b74 (patch)
treefcc7abb285572b9e539af7b4c324806a0364daf2
parent9d263d72848fb561e104a21da3ffccf791078f2a (diff)
downloadglibc-86b2dc4072725edb69ec4b872f9fcd17a4554b74.tar.gz
glibc-86b2dc4072725edb69ec4b872f9fcd17a4554b74.tar.xz
glibc-86b2dc4072725edb69ec4b872f9fcd17a4554b74.zip
Update.
	* sysdeps/generic/sysdep-cancel.h: New file.
	* sysdeps/unix/make-syscalls.sh: Handle C at start of args as
	cancelable syscall.
	* sysdeps/unix/inet/syscalls.list (accept, connect, recv, recvfrom,
	recvmsg, send, sendmsg, sendto): Make cancelable.
	* sysdeps/unix/mman/syscalls.list (msync): Likewise.
	* sysdeps/unix/sysv/linux/alpha/syscalls.list (llseek, pread,
	pwrite, accept, connect, recv, recvfrom, recvmsg, send, sendmsg,
	sendto, osf_select): Likewise.
	* sysdeps/unix/sysv/linux/hppa/syscalls.list (accept, connect, recv,
	recvfrom, recvmsg, send, sendmsg, sendto): Likewise.
	* sysdeps/unix/sysv/linux/ia64/syscalls.list (llseek, pread,
	pwrite, accept, connect, recv, recvfrom, recvmsg, send, sendmsg,
	sendto): Likewise.
	* sysdeps/unix/sysv/linux/mips/syscalls.list (accept, connect, recv,
	recvfrom, recvmsg, send, sendmsg, sendto): Likewise.
	* sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (llseek, pread,
	pwrite, accept, connect, recv, recvfrom, recvmsg, send, sendmsg,
	sendto): Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list (llseek, pread,
	pwrite, accept, connect, recv, recvfrom, recvmsg, send, sendmsg,
	sendto, select): Likewise.
	* sysdeps/unix/sysv/linux/x86_64/syscalls.list (llseek, pread,
	pwrite, accept, connect, recvfrom, recvmsg, sendmsg, sendto):
	Likewise.
	* sysdeps/unix/sysv/linux/syscalls.list (creat, nanosleep, pause,
	select, fcntl): Likewise.
	* sysdeps/unix/sysv/syscalls.list (pause, poll): Likewise.
	* sysdeps/unix/syscalls.list (close, fcntl, fsync, lseek, open,
	read, readv, select, sigsuspend, write, writev): Likewise.

2002-12-14  Jakub Jelinek  <jakub@redhat.com>
-rw-r--r--ChangeLog33
-rw-r--r--nptl/ChangeLog15
-rw-r--r--nptl/sysdeps/unix/sysv/linux/close.c49
-rw-r--r--nptl/sysdeps/unix/sysv/linux/creat.c57
-rw-r--r--nptl/sysdeps/unix/sysv/linux/fsync.c47
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h70
-rw-r--r--nptl/sysdeps/unix/sysv/linux/lseek.c48
-rw-r--r--nptl/sysdeps/unix/sysv/linux/msync.c47
-rw-r--r--nptl/sysdeps/unix/sysv/linux/nanosleep.c48
-rw-r--r--nptl/sysdeps/unix/sysv/linux/open.c62
-rw-r--r--nptl/sysdeps/unix/sysv/linux/pause.c47
-rw-r--r--nptl/sysdeps/unix/sysv/linux/read.c50
-rw-r--r--nptl/sysdeps/unix/sysv/linux/select.c57
-rw-r--r--nptl/sysdeps/unix/sysv/linux/write.c50
-rw-r--r--sysdeps/generic/sysdep-cancel.h1
-rw-r--r--sysdeps/unix/inet/syscalls.list16
-rw-r--r--sysdeps/unix/make-syscalls.sh7
-rw-r--r--sysdeps/unix/mman/syscalls.list2
-rw-r--r--sysdeps/unix/syscalls.list22
-rw-r--r--sysdeps/unix/sysv/linux/alpha/syscalls.list24
-rw-r--r--sysdeps/unix/sysv/linux/hppa/syscalls.list16
-rw-r--r--sysdeps/unix/sysv/linux/ia64/syscalls.list22
-rw-r--r--sysdeps/unix/sysv/linux/mips/syscalls.list16
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list22
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list24
-rw-r--r--sysdeps/unix/sysv/linux/syscalls.list10
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/syscalls.list18
-rw-r--r--sysdeps/unix/sysv/syscalls.list4
28 files changed, 223 insertions, 661 deletions
diff --git a/ChangeLog b/ChangeLog
index 9994a04665..f45ba51ba3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,38 @@
 2002-12-14  Jakub Jelinek  <jakub@redhat.com>
 
+	* sysdeps/generic/sysdep-cancel.h: New file.
+	* sysdeps/unix/make-syscalls.sh: Handle C at start of args as
+	cancelable syscall.
+	* sysdeps/unix/inet/syscalls.list (accept, connect, recv, recvfrom,
+	recvmsg, send, sendmsg, sendto): Make cancelable.
+	* sysdeps/unix/mman/syscalls.list (msync): Likewise.
+	* sysdeps/unix/sysv/linux/alpha/syscalls.list (llseek, pread,
+	pwrite, accept, connect, recv, recvfrom, recvmsg, send, sendmsg,
+	sendto, osf_select): Likewise.
+	* sysdeps/unix/sysv/linux/hppa/syscalls.list (accept, connect, recv,
+	recvfrom, recvmsg, send, sendmsg, sendto): Likewise.
+	* sysdeps/unix/sysv/linux/ia64/syscalls.list (llseek, pread,
+	pwrite, accept, connect, recv, recvfrom, recvmsg, send, sendmsg,
+	sendto): Likewise.
+	* sysdeps/unix/sysv/linux/mips/syscalls.list (accept, connect, recv,
+	recvfrom, recvmsg, send, sendmsg, sendto): Likewise.
+	* sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list (llseek, pread,
+	pwrite, accept, connect, recv, recvfrom, recvmsg, send, sendmsg,
+	sendto): Likewise.
+	* sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list (llseek, pread,
+	pwrite, accept, connect, recv, recvfrom, recvmsg, send, sendmsg,
+	sendto, select): Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/syscalls.list (llseek, pread,
+	pwrite, accept, connect, recvfrom, recvmsg, sendmsg, sendto):
+	Likewise.
+	* sysdeps/unix/sysv/linux/syscalls.list (creat, nanosleep, pause,
+	select, fcntl): Likewise.
+	* sysdeps/unix/sysv/syscalls.list (pause, poll): Likewise.
+	* sysdeps/unix/syscalls.list (close, fcntl, fsync, lseek, open,
+	read, readv, select, sigsuspend, write, writev): Likewise.
+
+2002-12-14  Jakub Jelinek  <jakub@redhat.com>
+
 	* dirent/bug-readdir1.c: Include unistd.h.
 
 2002-12-13  Jakub Jelinek  <jakub@redhat.com>
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 5650b3825a..a97ff6999e 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,18 @@
+2002-12-14  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: New file.
+	* sysdeps/unix/sysv/linux/open.c: Removed.
+	* sysdeps/unix/sysv/linux/fsync.c: Removed.
+	* sysdeps/unix/sysv/linux/lseek.c: Removed.
+	* sysdeps/unix/sysv/linux/msync.c: Removed.
+	* sysdeps/unix/sysv/linux/read.c: Removed.
+	* sysdeps/unix/sysv/linux/close.c: Removed.
+	* sysdeps/unix/sysv/linux/creat.c: Removed.
+	* sysdeps/unix/sysv/linux/nanosleep.c: Removed.
+	* sysdeps/unix/sysv/linux/pause.c: Removed.
+	* sysdeps/unix/sysv/linux/select.c: Removed.
+	* sysdeps/unix/sysv/linux/write.c: Removed.
+
 2002-12-14  Ulrich Drepper  <drepper@redhat.com>
 
 	* sysdeps/unix/sysv/linux/i386/pt-socket.S: Check multiple_threads
diff --git a/nptl/sysdeps/unix/sysv/linux/close.c b/nptl/sysdeps/unix/sysv/linux/close.c
deleted file mode 100644
index e5cac953f3..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/close.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#include <errno.h>
-#include <stdlib.h>
-#include <sysdep.h>
-#include <unistd.h>
-#include <nptl/pthreadP.h>
-#include <tls.h>
-
-
-int
-__libc_close (int fd)
-{
-#ifndef NOT_IN_libc
-  if (__builtin_expect (THREAD_GETMEM (THREAD_SELF,
-				       header.data.multiple_threads) == 0, 1))
-    return INLINE_SYSCALL (close, 1, fd);
-
-  int oldtype = LIBC_CANCEL_ASYNC ();
-#endif
-
-  int result = INLINE_SYSCALL (close, 1, fd);
-
-#ifndef NOT_IN_libc
-  LIBC_CANCEL_RESET (oldtype);
-#endif
-
-  return result;
-}
-strong_alias (__libc_close, __close)
-libc_hidden_weak (__close)
-weak_alias (__libc_close, close)
diff --git a/nptl/sysdeps/unix/sysv/linux/creat.c b/nptl/sysdeps/unix/sysv/linux/creat.c
deleted file mode 100644
index c21c8bb9a4..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/creat.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#include <errno.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <sysdep.h>
-#include <unistd.h>
-#include <nptl/pthreadP.h>
-#include <tls.h>
-
-
-int
-creat (const char *pathname, mode_t mode)
-{
-#ifndef NOT_IN_libc
-  if (__builtin_expect (THREAD_GETMEM (THREAD_SELF,
-				       header.data.multiple_threads) == 0, 1))
-    {
-#ifdef __NR_creat
-      return INLINE_SYSCALL (creat, 2, pathname, mode);
-#else
-      return __libc_open (pathname, O_WRONLY|O_CREAT|O_TRUNC, mode);
-#endif
-    }
-
-  int oldtype = LIBC_CANCEL_ASYNC ();
-#endif
-
-#ifdef __NR_creat
-  int result = INLINE_SYSCALL (creat, 2, pathname, mode);
-#else
-  int result = __libc_open (pathname, O_WRONLY|O_CREAT|O_TRUNC, mode);
-#endif
-
-#ifndef NOT_IN_libc
-  LIBC_CANCEL_RESET (oldtype);
-#endif
-
-  return result;
-}
diff --git a/nptl/sysdeps/unix/sysv/linux/fsync.c b/nptl/sysdeps/unix/sysv/linux/fsync.c
deleted file mode 100644
index b132a75ee9..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/fsync.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#include <errno.h>
-#include <stdlib.h>
-#include <sysdep.h>
-#include <unistd.h>
-#include <nptl/pthreadP.h>
-#include <tls.h>
-
-
-int
-__libc_fsync (int fd)
-{
-#ifndef NOT_IN_libc
-  if (__builtin_expect (THREAD_GETMEM (THREAD_SELF,
-				       header.data.multiple_threads) == 0, 1))
-    return INLINE_SYSCALL (fsync, 1, fd);
-
-  int oldtype = LIBC_CANCEL_ASYNC ();
-#endif
-
-  int result = INLINE_SYSCALL (fsync, 1, fd);
-
-#ifndef NOT_IN_libc
-  LIBC_CANCEL_RESET (oldtype);
-#endif
-
-  return result;
-}
-weak_alias (__libc_fsync, fsync)
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h b/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
new file mode 100644
index 0000000000..ed9f9420e7
--- /dev/null
+++ b/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
@@ -0,0 +1,70 @@
+/* Copyright (C) 2002 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Jakub Jelinek <jakub@redhat.com>, 2002.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <sysdep.h>
+#include <tls.h>
+
+#if !defined NOT_IN_libc || defined IS_IN_libpthread
+
+#undef PSEUDO
+#define PSEUDO(name, syscall_name, args)				      \
+  .text;								      \
+  ENTRY (name)								      \
+    cmpl $0, %gs:MULTIPLE_THREADS_OFFSET;				      \
+    jne L(pseudo_cancel);						      \
+    DO_CALL (syscall_name, args);					      \
+    cmpl $-4095, %eax;							      \
+    jae SYSCALL_ERROR_LABEL;						      \
+    ret;								      \
+  L(pseudo_cancel):							      \
+    call __libc_enable_asynccancel;					      \
+    SAVE_OLDTYPE_##args							      \
+    PUSHARGS_##args							      \
+    DOCARGS_##args							      \
+    movl $SYS_ify (syscall_name), %eax;					      \
+    int $0x80								      \
+    POPARGS_##args;							      \
+    POPCARGS_##args							      \
+    cmpl $-4095, %eax;							      \
+    jae SYSCALL_ERROR_LABEL;						      \
+  L(pseudo_end):
+
+#define SAVE_OLDTYPE_0	movl %eax, %ecx;
+#define SAVE_OLDTYPE_1	SAVE_OLDTYPE_0
+#define SAVE_OLDTYPE_2	pushl %eax;
+#define SAVE_OLDTYPE_3	SAVE_OLDTYPE_2
+#define SAVE_OLDTYPE_4	SAVE_OLDTYPE_2
+#define SAVE_OLDTYPE_5	SAVE_OLDTYPE_2
+
+#define DOCARGS_0	DOARGS_0
+#define DOCARGS_1	DOARGS_1
+#define DOCARGS_2	_DOARGS_2 (12)
+#define DOCARGS_3	_DOARGS_3 (20)
+#define DOCARGS_4	_DOARGS_4 (28)
+#define DOCARGS_5	_DOARGS_5 (36)
+
+#define DISABLE		call __libc_disable_asynccancel
+#define POPCARGS_0	pushl %eax; movl %ecx, %eax; DISABLE; popl %eax;
+#define POPCARGS_1	POPCARGS_0
+#define POPCARGS_2	xchgl (%esp), %eax; DISABLE; popl %eax;
+#define POPCARGS_3	POPCARGS_2
+#define POPCARGS_4	POPCARGS_2
+#define POPCARGS_5	POPCARGS_2
+
+#endif
diff --git a/nptl/sysdeps/unix/sysv/linux/lseek.c b/nptl/sysdeps/unix/sysv/linux/lseek.c
deleted file mode 100644
index 5229216122..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/lseek.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#include <errno.h>
-#include <stdlib.h>
-#include <sysdep.h>
-#include <unistd.h>
-#include <nptl/pthreadP.h>
-#include <tls.h>
-
-
-off_t
-__libc_lseek (int fd, off_t offset, int whence)
-{
-#ifndef NOT_IN_libc
-  if (__builtin_expect (THREAD_GETMEM (THREAD_SELF,
-				       header.data.multiple_threads) == 0, 1))
-    return INLINE_SYSCALL (lseek, 3, fd, offset, whence);
-
-  int oldtype = LIBC_CANCEL_ASYNC ();
-#endif
-
-  off_t result = INLINE_SYSCALL (lseek, 3, fd, offset, whence);
-
-#ifndef NOT_IN_libc
-  LIBC_CANCEL_RESET (oldtype);
-#endif
-
-  return result;
-}
-strong_alias (__libc_lseek, __lseek)
-weak_alias (__libc_lseek, lseek)
diff --git a/nptl/sysdeps/unix/sysv/linux/msync.c b/nptl/sysdeps/unix/sysv/linux/msync.c
deleted file mode 100644
index 9edd56c024..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/msync.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#include <errno.h>
-#include <stdlib.h>
-#include <sysdep.h>
-#include <sys/mman.h>
-#include <nptl/pthreadP.h>
-#include <tls.h>
-
-
-int
-__libc_msync (void *start, size_t length, int flags)
-{
-#ifndef NOT_IN_libc
-  if (__builtin_expect (THREAD_GETMEM (THREAD_SELF,
-				       header.data.multiple_threads) == 0, 1))
-    return INLINE_SYSCALL (msync, 3, start, length, flags);
-
-  int oldtype = LIBC_CANCEL_ASYNC ();
-#endif
-
-  int result = INLINE_SYSCALL (msync, 3, start, length, flags);
-
-#ifndef NOT_IN_libc
-  LIBC_CANCEL_RESET (oldtype);
-#endif
-
-  return result;
-}
-weak_alias (__libc_msync, msync)
diff --git a/nptl/sysdeps/unix/sysv/linux/nanosleep.c b/nptl/sysdeps/unix/sysv/linux/nanosleep.c
deleted file mode 100644
index d43f9eb9da..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/nanosleep.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#include <errno.h>
-#include <stdlib.h>
-#include <sysdep.h>
-#include <time.h>
-#include <nptl/pthreadP.h>
-#include <tls.h>
-
-
-int
-__libc_nanosleep (const struct timespec *req, struct timespec *rem)
-{
-#ifndef NOT_IN_libc
-  if (__builtin_expect (THREAD_GETMEM (THREAD_SELF,
-				       header.data.multiple_threads) == 0, 1))
-    return INLINE_SYSCALL (nanosleep, 2, req, rem);
-
-  int oldtype = LIBC_CANCEL_ASYNC ();
-#endif
-
-  int result = INLINE_SYSCALL (nanosleep, 2, req, rem);
-
-#ifndef NOT_IN_libc
-  LIBC_CANCEL_RESET (oldtype);
-#endif
-
-  return result;
-}
-strong_alias (__libc_nanosleep, __nanosleep)
-weak_alias (__libc_nanosleep, nanosleep)
diff --git a/nptl/sysdeps/unix/sysv/linux/open.c b/nptl/sysdeps/unix/sysv/linux/open.c
deleted file mode 100644
index f0f95c1b60..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/open.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#include <errno.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <sysdep.h>
-#include <stdarg.h>
-#include <unistd.h>
-#include <nptl/pthreadP.h>
-#include <tls.h>
-
-
-int
-__libc_open (const char *file, int oflag, ...)
-{
-  int mode = 0;
-
-  if (oflag & O_CREAT)
-    {
-      va_list arg;
-      va_start (arg, oflag);
-      mode = va_arg (arg, int);
-      va_end (arg);
-    }
-
-#ifndef NOT_IN_libc
-  if (__builtin_expect (THREAD_GETMEM (THREAD_SELF,
-				       header.data.multiple_threads) == 0, 1))
-    return INLINE_SYSCALL (open, 3, file, oflag, mode);
-
-  int oldtype = LIBC_CANCEL_ASYNC ();
-#endif
-
-  int result = INLINE_SYSCALL (open, 3, file, oflag, mode);
-
-#ifndef NOT_IN_libc
-  LIBC_CANCEL_RESET (oldtype);
-#endif
-
-  return result;
-}
-libc_hidden_def (__libc_open)
-strong_alias (__libc_open, __open)
-libc_hidden_weak (__open)
-weak_alias (__libc_open, open)
diff --git a/nptl/sysdeps/unix/sysv/linux/pause.c b/nptl/sysdeps/unix/sysv/linux/pause.c
deleted file mode 100644
index 6348974031..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/pause.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#include <errno.h>
-#include <stdlib.h>
-#include <sysdep.h>
-#include <unistd.h>
-#include <nptl/pthreadP.h>
-#include <tls.h>
-
-
-int
-__libc_pause (void)
-{
-#ifndef NOT_IN_libc
-  if (__builtin_expect (THREAD_GETMEM (THREAD_SELF,
-				       header.data.multiple_threads) == 0, 1))
-    return INLINE_SYSCALL (pause, 0);
-
-  int oldtype = LIBC_CANCEL_ASYNC ();
-#endif
-
-  int result = INLINE_SYSCALL (pause, 0);
-
-#ifndef NOT_IN_libc
-  LIBC_CANCEL_RESET (oldtype);
-#endif
-
-  return result;
-}
-weak_alias (__libc_pause, pause)
diff --git a/nptl/sysdeps/unix/sysv/linux/read.c b/nptl/sysdeps/unix/sysv/linux/read.c
deleted file mode 100644
index ea04002023..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/read.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#include <errno.h>
-#include <stdlib.h>
-#include <sysdep.h>
-#include <unistd.h>
-#include <nptl/pthreadP.h>
-#include <tls.h>
-
-
-ssize_t
-__libc_read (int fd, void *buf, size_t count)
-{
-#ifndef NOT_IN_libc
-  if (__builtin_expect (THREAD_GETMEM (THREAD_SELF,
-				       header.data.multiple_threads) == 0, 1))
-    return INLINE_SYSCALL (read, 3, fd, buf, count);
-
-  int oldtype = LIBC_CANCEL_ASYNC ();
-#endif
-
-  ssize_t result = INLINE_SYSCALL (read, 3, fd, buf, count);
-
-#ifndef NOT_IN_libc
-  LIBC_CANCEL_RESET (oldtype);
-#endif
-
-  return result;
-}
-libc_hidden_def (__libc_read)
-strong_alias (__libc_read, __read)
-libc_hidden_weak (__read)
-weak_alias (__libc_read, read)
diff --git a/nptl/sysdeps/unix/sysv/linux/select.c b/nptl/sysdeps/unix/sysv/linux/select.c
deleted file mode 100644
index b1c46595be..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/select.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#include <errno.h>
-#include <stdlib.h>
-#include <sysdep.h>
-#include <sys/select.h>
-#include <nptl/pthreadP.h>
-#include <tls.h>
-
-#ifdef __NR__newselect
-# undef __NR_select
-# define __NR_select __NR__newselect
-#endif
-
-
-int
-__libc_select (int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
-	       struct timeval *timeout)
-{
-#ifndef NOT_IN_libc
-  if (__builtin_expect (THREAD_GETMEM (THREAD_SELF,
-				       header.data.multiple_threads) == 0, 1))
-    return INLINE_SYSCALL (select, 5, n, readfds, writefds, exceptfds,
-			   timeout);
-
-  int oldtype = LIBC_CANCEL_ASYNC ();
-#endif
-
-  int result = INLINE_SYSCALL (select, 5, n, readfds, writefds, exceptfds,
-			       timeout);
-
-#ifndef NOT_IN_libc
-  LIBC_CANCEL_RESET (oldtype);
-#endif
-
-  return result;
-}
-strong_alias (__libc_select, __select)
-libc_hidden_weak(__select)
-weak_alias (__libc_select, select)
diff --git a/nptl/sysdeps/unix/sysv/linux/write.c b/nptl/sysdeps/unix/sysv/linux/write.c
deleted file mode 100644
index ea9b60c979..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/write.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#include <errno.h>
-#include <stdlib.h>
-#include <sysdep.h>
-#include <unistd.h>
-#include <nptl/pthreadP.h>
-#include <tls.h>
-
-
-ssize_t
-__libc_write (int fd, const void *buf, size_t count)
-{
-#ifndef NOT_IN_libc
-  if (__builtin_expect (THREAD_GETMEM (THREAD_SELF,
-				       header.data.multiple_threads) == 0, 1))
-    return INLINE_SYSCALL (write, 3, fd, buf, count);
-
-  int oldtype = LIBC_CANCEL_ASYNC ();
-#endif
-
-  ssize_t result = INLINE_SYSCALL (write, 3, fd, buf, count);
-
-#ifndef NOT_IN_libc
-  LIBC_CANCEL_RESET (oldtype);
-#endif
-
-  return result;
-}
-libc_hidden_def (__libc_write)
-strong_alias (__libc_write, __write)
-libc_hidden_weak (__write)
-weak_alias (__libc_write, write)
diff --git a/sysdeps/generic/sysdep-cancel.h b/sysdeps/generic/sysdep-cancel.h
new file mode 100644
index 0000000000..0eca1e927c
--- /dev/null
+++ b/sysdeps/generic/sysdep-cancel.h
@@ -0,0 +1 @@
+#include <sysdep.h>
diff --git a/sysdeps/unix/inet/syscalls.list b/sysdeps/unix/inet/syscalls.list
index c2cfa9f4d6..f0b7af7b1a 100644
--- a/sysdeps/unix/inet/syscalls.list
+++ b/sysdeps/unix/inet/syscalls.list
@@ -1,20 +1,20 @@
 # File name	Caller	Syscall name	# args	Strong name	Weak names
 
-accept		-	accept		i:iBN	__libc_accept	accept
+accept		-	accept		Ci:iBN	__libc_accept	accept
 bind		-	bind		i:ipi	__bind		bind
-connect		-	connect		i:ipi	__libc_connect	__connect __connect_internal connect
+connect		-	connect		Ci:ipi	__libc_connect	__connect __connect_internal connect
 gethostid	-	gethostid	i:	gethostid
 gethostname	-	gethostname	i:bn	__gethostname	gethostname
 getpeername	-	getpeername	i:ibN	__getpeername	getpeername
 getsockname	-	getsockname	i:ibN	__getsockname	getsockname
 getsockopt	-	getsockopt	i:iiiBN	getsockopt
 listen		-	listen		i:ii	__listen	listen
-recv		-	recv		i:ibni	__libc_recv	recv
-recvfrom	-	recvfrom	i:ibniBN	__libc_recvfrom __recvfrom recvfrom
-recvmsg		-	recvmsg		i:ipi	__libc_recvmsg	__recvmsg recvmsg
-send		-	send		i:ibni	__libc_send	__send send 
-sendmsg		-	sendmsg		i:ipi	__libc_sendmsg	__sendmsg sendmsg
-sendto		-	sendto		i:ibnibn	__libc_sendto	__sendto sendto
+recv		-	recv		Ci:ibni	__libc_recv	recv
+recvfrom	-	recvfrom	Ci:ibniBN	__libc_recvfrom __recvfrom recvfrom
+recvmsg		-	recvmsg		Ci:ipi	__libc_recvmsg	__recvmsg recvmsg
+send		-	send		Ci:ibni	__libc_send	__send send 
+sendmsg		-	sendmsg		Ci:ipi	__libc_sendmsg	__sendmsg sendmsg
+sendto		-	sendto		Ci:ibnibn	__libc_sendto	__sendto sendto
 sethostid	-	sethostid	i:i	sethostid
 sethostname	-	sethostname	i:pi	sethostname
 setsockopt	-	setsockopt	i:iiibn	setsockopt	__setsockopt
diff --git a/sysdeps/unix/make-syscalls.sh b/sysdeps/unix/make-syscalls.sh
index d49688aacc..7b53651240 100644
--- a/sysdeps/unix/make-syscalls.sh
+++ b/sysdeps/unix/make-syscalls.sh
@@ -83,6 +83,11 @@ while read file srcfile caller syscall args strong weak; do
   ;;
   esac
 
+  cancellable=
+  case $args in
+  C*) cancellable=-cancel; args=`echo $args | sed 's/C:\?//'`;;
+  esac
+
   # Derive the number of arguments from the argument signature
   case $args in
   [0-9]) nargs=$args;;
@@ -142,7 +147,7 @@ shared-only-routines += $file
   x*)
   echo "\
 	\$(make-target-directory)
-	(echo '#include <sysdep.h>'; \\
+	(echo '#include <sysdep$cancellable.h>'; \\
 	 echo 'PSEUDO ($strong, $syscall, $nargs)'; \\
 	 echo '	ret'; \\
 	 echo 'PSEUDO_END($strong)'; \\
diff --git a/sysdeps/unix/mman/syscalls.list b/sysdeps/unix/mman/syscalls.list
index 772caff370..7db8eb7729 100644
--- a/sysdeps/unix/mman/syscalls.list
+++ b/sysdeps/unix/mman/syscalls.list
@@ -7,5 +7,5 @@
 madvise		-	madvise		i:pii	madvise
 mmap		-	mmap		b:aniiii __mmap		mmap
 mprotect	-	mprotect	i:aii	__mprotect	mprotect
-msync		-	msync		i:aii	__libc_msync	msync
+msync		-	msync		Ci:aii	__libc_msync	msync
 munmap		-	munmap		i:ai	__munmap	munmap
diff --git a/sysdeps/unix/syscalls.list b/sysdeps/unix/syscalls.list
index a7a875450b..bbd068a33e 100644
--- a/sysdeps/unix/syscalls.list
+++ b/sysdeps/unix/syscalls.list
@@ -6,13 +6,13 @@ chdir		-	chdir		i:s	__chdir		chdir
 chmod		-	chmod		i:si	__chmod		chmod
 chown		-	chown		i:sii	__chown		__chown_internal chown
 chroot		-	chroot		i:s	chroot
-close		-	close		i:i	__libc_close	__close close
+close		-	close		Ci:i	__libc_close	__close close
 dup		-	dup		i:i	__dup		dup
 dup2		-	dup2		i:ii	__dup2		dup2
 fchdir		-	fchdir		i:i	__fchdir	fchdir
-fcntl		-	fcntl		i:iiF	__libc_fcntl	__fcntl __fcntl_internal fcntl
+fcntl		-	fcntl		Ci:iiF	__libc_fcntl	__fcntl __fcntl_internal fcntl
 fstatfs		-	fstatfs		i:ip	__fstatfs	fstatfs
-fsync		-	fsync		i:i	__libc_fsync	fsync
+fsync		-	fsync		Ci:i	__libc_fsync	fsync
 getdomain	-	getdomainname	i:si	getdomainname
 getgid		-	getgid		i:	__getgid	getgid
 getgroups	-	getgroups	i:ip	__getgroups	getgroups
@@ -24,18 +24,18 @@ getuid		-	getuid		i:	__getuid	getuid
 ioctl		-	ioctl		i:iiI	__ioctl		ioctl
 kill		-	kill		i:ii	__kill		kill
 link		-	link		i:ss	__link		link
-lseek		-	lseek		i:iii	__libc_lseek	__lseek lseek
+lseek		-	lseek		Ci:iii	__libc_lseek	__lseek lseek
 mkdir		-	mkdir		i:si	__mkdir		mkdir
-open		-	open		i:siv	__libc_open __open open
+open		-	open		Ci:siv	__libc_open __open open
 profil		-	profil		i:piii	__profil	profil
 ptrace		-	ptrace		i:iiii	ptrace
-read		-	read		i:ibn	__libc_read	__read read
+read		-	read		Ci:ibn	__libc_read	__read read
 readlink	-	readlink	i:spi	__readlink	readlink
-readv		-	readv		i:ipi	__readv		readv
+readv		-	readv		Ci:ipi	__readv		readv
 reboot		-	reboot		i:i	reboot
 rename		-	rename		i:ss	rename
 rmdir		-	rmdir		i:s	__rmdir		rmdir
-select		-	select		i:iPPPP	__select	__libc_select select
+select		-	select		Ci:iPPPP	__select	__libc_select select
 setdomain	-	setdomainname	i:si	setdomainname
 setegid		-	setegid		i:i	__setegid	setegid
 seteuid		-	seteuid		i:i	__seteuid	seteuid
@@ -47,7 +47,7 @@ setrlimit	-	setrlimit	i:ip	__setrlimit setrlimit
 setsid		-	setsid		i:	__setsid	setsid
 settimeofday	-	settimeofday	i:PP	__settimeofday	settimeofday
 setuid		-	setuid		i:i	__setuid	setuid
-sigsuspend	-	sigsuspend	i:p	sigsuspend
+sigsuspend	-	sigsuspend	Ci:p	sigsuspend
 sstk		-	sstk		b:i	sstk
 statfs		-	statfs		i:sp	__statfs	statfs
 swapoff		-	swapoff		i:s	swapoff
@@ -61,5 +61,5 @@ umask		-	umask		i:i	__umask		umask
 uname		-	uname		i:p	__uname		uname
 unlink		-	unlink		i:s	__unlink	unlink
 utimes		-	utimes		i:sp	__utimes	utimes
-write		-	write		i:ibn	__libc_write	__write write
-writev		-	writev		i:ipi	__writev	writev
+write		-	write		Ci:ibn	__libc_write	__write write
+writev		-	writev		Ci:ipi	__writev	writev
diff --git a/sysdeps/unix/sysv/linux/alpha/syscalls.list b/sysdeps/unix/sysv/linux/alpha/syscalls.list
index c8ab6ec847..7f5c9d0052 100644
--- a/sysdeps/unix/sysv/linux/alpha/syscalls.list
+++ b/sysdeps/unix/sysv/linux/alpha/syscalls.list
@@ -19,9 +19,9 @@ vfork		-	vfork		0	__vfork		vfork
 getpeername	-	getpeername	3	__getpeername	getpeername
 getpriority	-	getpriority	2	__getpriority	getpriority
 mmap		-	mmap		6	__mmap		mmap __mmap64 mmap64
-llseek		EXTRA	lseek		3	__libc_lseek64	__llseek llseek __lseek64 lseek64
-pread		-	pread		4	__libc_pread	__libc_pread64 __pread pread __pread64 pread64
-pwrite		-	pwrite		4	__libc_pwrite	__libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
+llseek		EXTRA	lseek		C:3	__libc_lseek64	__llseek llseek __lseek64 lseek64
+pread		-	pread		C:4	__libc_pread	__libc_pread64 __pread pread __pread64 pread64
+pwrite		-	pwrite		C:4	__libc_pwrite	__libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
 fstatfs		-	fstatfs		2	__fstatfs	fstatfs __fstatfs64 fstatfs64
 statfs		-	statfs		2	__statfs	statfs statfs64
 getrlimit	-	getrlimit	2	__getrlimit	getrlimit getrlimit64
@@ -36,20 +36,20 @@ sys_ustat	ustat	ustat		2	__syscall_ustat
 sys_mknod	xmknod	mknod		3	__syscall_mknod
 
 # proper socket implementations:
-accept		-	accept		3	__libc_accept	__accept accept
+accept		-	accept		C:3	__libc_accept	__accept accept
 bind		-	bind		3	__bind		bind
-connect		-	connect		3	__libc_connect	__connect_internal __connect connect
+connect		-	connect		C:3	__libc_connect	__connect_internal __connect connect
 getpeername	-	getpeername	3	__getpeername	getpeername
 getsockname	-	getsockname	3	__getsockname	getsockname
 getsockopt	-	getsockopt	5	__getsockopt	getsockopt
 listen		-	listen		2	__listen	listen
-recv		-	recv		4	__libc_recv	__recv recv
-recvfrom	-	recvfrom	6	__libc_recvfrom	__recvfrom recvfrom
-recvmsg		-	recvmsg		3	__libc_recvmsg	__recvmsg recvmsg
+recv		-	recv		C:4	__libc_recv	__recv recv
+recvfrom	-	recvfrom	C:6	__libc_recvfrom	__recvfrom recvfrom
+recvmsg		-	recvmsg		C:3	__libc_recvmsg	__recvmsg recvmsg
 ptrace		-	ptrace		4	__ptrace	ptrace
-send		-	send		4	__libc_send	__send send
-sendmsg		-	sendmsg		3	__libc_sendmsg	__sendmsg sendmsg
-sendto		-	sendto		6	__libc_sendto	__sendto sendto
+send		-	send		C:4	__libc_send	__send send
+sendmsg		-	sendmsg		C:3	__libc_sendmsg	__sendmsg sendmsg
+sendto		-	sendto		C:6	__libc_sendto	__sendto sendto
 setsockopt	-	setsockopt	5	__setsockopt	setsockopt
 shutdown	-	shutdown	2	__shutdown	shutdown
 socket		-	socket		3	__socket	socket
@@ -64,7 +64,7 @@ pciconfig_iobase EXTRA	pciconfig_iobase 3	__pciconfig_iobase pciconfig_iobase
 adjtimex       -       syscall_adjtimex 1      __syscall_adjtimex syscall_adjtimex
 
 # support old timeval32 entry points
-osf_select	-	osf_select	5	__select_tv32  __select@GLIBC_2.0 select@GLIBC_2.0
+osf_select	-	osf_select	C:5	__select_tv32  __select@GLIBC_2.0 select@GLIBC_2.0
 osf_gettimeofday -	osf_gettimeofday 2	__gettimeofday_tv32  __gettimeofday@GLIBC_2.0 gettimeofday@GLIBC_2.0
 osf_settimeofday -	osf_settimeofday 2	__settimeofday_tv32  settimeofday@GLIBC_2.0
 osf_getitimer	-	osf_getitimer	2	__getitimer_tv32  getitimer@GLIBC_2.0
diff --git a/sysdeps/unix/sysv/linux/hppa/syscalls.list b/sysdeps/unix/sysv/linux/hppa/syscalls.list
index 6b18e1f166..6edb2d2b16 100644
--- a/sysdeps/unix/sysv/linux/hppa/syscalls.list
+++ b/sysdeps/unix/sysv/linux/hppa/syscalls.list
@@ -14,19 +14,19 @@ semget		-	semget		i:iii	__semget	semget
 semctl		-	semctl		i:iiii	__semctl	semctl
 
 # proper socket implementations:
-accept		-	accept		i:iBN	__libc_accept	__accept accept
+accept		-	accept		Ci:iBN	__libc_accept	__accept accept
 bind		-	bind		i:ipi	__bind		bind
-connect		-	connect		i:ipi	__libc_connect	__connect_internal __connect connect 
+connect		-	connect		Ci:ipi	__libc_connect	__connect_internal __connect connect 
 getpeername	-	getpeername	i:ipp	__getpeername	getpeername
 getsockname	-	getsockname	i:ipp	__getsockname	getsockname
 getsockopt	-	getsockopt	i:iiiBN	__getsockopt	getsockopt
 listen		-	listen		i:ii	__listen	listen
-recv		-	recv		i:ibni	__libc_recv	__recv recv
-recvfrom	-	recvfrom	i:ibniBN	__libc_recvfrom	__recvfrom recvfrom
-recvmsg		-	recvmsg		i:ipi	__libc_recvmsg	__recvmsg recvmsg
-send		-	send		i:ibni	__libc_send	__send send
-sendmsg		-	sendmsg		i:ipi	__libc_sendmsg	__sendmsg sendmsg
-sendto		-	sendto		i:ibnibn	__libc_sendto	__sendto sendto
+recv		-	recv		Ci:ibni	__libc_recv	__recv recv
+recvfrom	-	recvfrom	Ci:ibniBN	__libc_recvfrom	__recvfrom recvfrom
+recvmsg		-	recvmsg		Ci:ipi	__libc_recvmsg	__recvmsg recvmsg
+send		-	send		Ci:ibni	__libc_send	__send send
+sendmsg		-	sendmsg		Ci:ipi	__libc_sendmsg	__sendmsg sendmsg
+sendto		-	sendto		Ci:ibnibn	__libc_sendto	__sendto sendto
 setsockopt	-	setsockopt	i:iiibn	__setsockopt	setsockopt
 shutdown	-	shutdown	i:ii	__shutdown	shutdown
 socket		-	socket		i:iii	__socket	socket
diff --git a/sysdeps/unix/sysv/linux/ia64/syscalls.list b/sysdeps/unix/sysv/linux/ia64/syscalls.list
index 723573aa43..a18d5efd44 100644
--- a/sysdeps/unix/sysv/linux/ia64/syscalls.list
+++ b/sysdeps/unix/sysv/linux/ia64/syscalls.list
@@ -3,10 +3,10 @@
 umount2		-	umount		2	__umount2	umount2
 
 # Whee! 64-bit systems naturally implement llseek.
-llseek		EXTRA	lseek		3	__libc_lseek	__lseek lseek __libc_lseek64 __llseek llseek __lseek64 lseek64
+llseek		EXTRA	lseek		C:3	__libc_lseek	__lseek lseek __libc_lseek64 __llseek llseek __lseek64 lseek64
 lseek		llseek	-
-pread		-	pread		4	__libc_pread	__libc_pread64 __pread pread __pread64 pread64
-pwrite		-	pwrite		4	__libc_pwrite	__libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
+pread		-	pread		C:4	__libc_pread	__libc_pread64 __pread pread __pread64 pread64
+pwrite		-	pwrite		C:4	__libc_pwrite	__libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
 fstatfs		-	fstatfs		i:ip	__fstatfs	fstatfs fstatfs64 __fstatfs64
 statfs		-	statfs		i:sp	__statfs	statfs statfs64
 mmap		-	mmap		b:aniiii __mmap		mmap __mmap64 mmap64
@@ -33,19 +33,19 @@ semget		-	semget		i:iii	__semget	semget
 semctl		-	semctl		i:iiii	__semctl	semctl
 
 # proper socket implementations:
-accept		-	accept		i:iBN	__libc_accept	__accept accept
+accept		-	accept		Ci:iBN	__libc_accept	__accept accept
 bind		-	bind		i:ipi	__bind		bind
-connect		-	connect		i:ipi	__libc_connect	__connect_internal __connect connect
+connect		-	connect		Ci:ipi	__libc_connect	__connect_internal __connect connect
 getpeername	-	getpeername	i:ipp	__getpeername	getpeername
 getsockname	-	getsockname	i:ipp	__getsockname	getsockname
 getsockopt	-	getsockopt	i:iiiBN	__getsockopt	getsockopt
 listen		-	listen		i:ii	__listen	listen
-recv		-	recv		i:ibni	__libc_recv	__recv recv
-recvfrom	-	recvfrom	i:ibniBN	__libc_recvfrom	__recvfrom recvfrom
-recvmsg		-	recvmsg		i:ipi	__libc_recvmsg	__recvmsg recvmsg
-send		-	send		i:ibni	__libc_send	__send send
-sendmsg		-	sendmsg		i:ipi	__libc_sendmsg	__sendmsg sendmsg
-sendto		-	sendto		i:ibnibn	__libc_sendto	__sendto sendto
+recv		-	recv		Ci:ibni	__libc_recv	__recv recv
+recvfrom	-	recvfrom	Ci:ibniBN	__libc_recvfrom	__recvfrom recvfrom
+recvmsg		-	recvmsg		Ci:ipi	__libc_recvmsg	__recvmsg recvmsg
+send		-	send		Ci:ibni	__libc_send	__send send
+sendmsg		-	sendmsg		Ci:ipi	__libc_sendmsg	__sendmsg sendmsg
+sendto		-	sendto		Ci:ibnibn	__libc_sendto	__sendto sendto
 setsockopt	-	setsockopt	i:iiibn	__setsockopt	setsockopt
 shutdown	-	shutdown	i:ii	__shutdown	shutdown
 socket		-	socket		i:iii	__socket	socket
diff --git a/sysdeps/unix/sysv/linux/mips/syscalls.list b/sysdeps/unix/sysv/linux/mips/syscalls.list
index 76b8b0fe15..685edc0e65 100644
--- a/sysdeps/unix/sysv/linux/mips/syscalls.list
+++ b/sysdeps/unix/sysv/linux/mips/syscalls.list
@@ -14,19 +14,19 @@ s_sigsuspend	sigsuspend sigsuspend	i:p	__syscall_sigsuspend
 # Socket functions; Linux/MIPS doesn't use the socketcall(2) wrapper;
 # it's provided for compatibility, though.
 #
-accept		-	accept		i:iBN	__libc_accept	__accept accept
+accept		-	accept		Ci:iBN	__libc_accept	__accept accept
 bind		-	bind		i:ipi	__bind		bind
-connect		-	connect		i:ipi	__libc_connect	__connect_internal __connect connect
+connect		-	connect		Ci:ipi	__libc_connect	__connect_internal __connect connect
 getpeername	-	getpeername	i:ipp	__getpeername	getpeername
 getsockname	-	getsockname	i:ipp	__getsockname	getsockname
 getsockopt	-	getsockopt	i:iiiBN	__getsockopt	getsockopt
 listen		-	listen		i:ii	__listen	listen
-recv		-	recv		i:ibni	__libc_recv	__recv recv
-recvfrom	-	recvfrom	i:ibniBN __libc_recvfrom __recvfrom recvfrom
-recvmsg		-	recvmsg		i:ipi	__libc_recvmsg	__recvmsg recvmsg
-send		-	send		i:ibni	__libc_send	__send send
-sendmsg		-	sendmsg		i:ipi	__libc_sendmsg	__sendmsg sendmsg
-sendto		-	sendto		i:ibnibn __libc_sendto	__sendto sendto
+recv		-	recv		Ci:ibni	__libc_recv	__recv recv
+recvfrom	-	recvfrom	Ci:ibniBN __libc_recvfrom __recvfrom recvfrom
+recvmsg		-	recvmsg		Ci:ipi	__libc_recvmsg	__recvmsg recvmsg
+send		-	send		Ci:ibni	__libc_send	__send send
+sendmsg		-	sendmsg		Ci:ipi	__libc_sendmsg	__sendmsg sendmsg
+sendto		-	sendto		Ci:ibnibn __libc_sendto	__sendto sendto
 setsockopt	-	setsockopt	i:iiibn	__setsockopt	setsockopt
 shutdown	-	shutdown	i:ii	__shutdown	shutdown
 socket		-	socket		i:iii	__socket	socket
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list b/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
index 3e595f5fd0..55c8c3aa8e 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list
@@ -1,9 +1,9 @@
 # File name	Caller	Syscall name	# args	Strong name	Weak names
 
-llseek		EXTRA	lseek		3	__libc_lseek	__lseek lseek __libc_lseek64 __llseek llseek __lseek64 lseek64
+llseek		EXTRA	lseek		C:3	__libc_lseek	__lseek lseek __libc_lseek64 __llseek llseek __lseek64 lseek64
 lseek		llseek	-
-pread		-	pread		4	__libc_pread	__libc_pread64 __pread pread __pread64 pread64
-pwrite		-	pwrite		4	__libc_pwrite	__libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
+pread		-	pread		C:4	__libc_pread	__libc_pread64 __pread pread __pread64 pread64
+pwrite		-	pwrite		C:4	__libc_pwrite	__libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
 fstatfs		-	fstatfs		i:ip	__fstatfs	fstatfs fstatfs64 __fstatfs64
 statfs		-	statfs		i:sp	__statfs	statfs statfs64
 getpeername	-	getpeername	i:ipp	__getpeername	getpeername
@@ -26,19 +26,19 @@ semget		-	semget		i:iii	__semget	semget
 semctl		-	semctl		i:iiii	__semctl	semctl
 
 # proper socket implementations:
-accept		-	accept		i:iBN	__libc_accept	__accept accept
+accept		-	accept		Ci:iBN	__libc_accept	__accept accept
 bind		-	bind		i:ipi	__bind		bind
-connect		-	connect		i:ipi	__libc_connect	__connect_internal __connect connect
+connect		-	connect		Ci:ipi	__libc_connect	__connect_internal __connect connect
 getpeername	-	getpeername	i:ipp	__getpeername	getpeername
 getsockname	-	getsockname	i:ipp	__getsockname	getsockname
 getsockopt	-	getsockopt	i:iiiBN	__getsockopt	getsockopt
 listen		-	listen		i:ii	__listen	listen
-recv		-	recv		i:ibni	__libc_recv	__recv recv
-recvfrom	-	recvfrom	i:ibniBN	__libc_recvfrom	__recvfrom recvfrom
-recvmsg		-	recvmsg		i:ipi	__libc_recvmsg	__recvmsg recvmsg
-send		-	send		i:ibni	__libc_send	__send send
-sendmsg		-	sendmsg		i:ipi	__libc_sendmsg	__sendmsg sendmsg
-sendto		-	sendto		i:ibnibn	__libc_sendto	__sendto sendto
+recv		-	recv		Ci:ibni	__libc_recv	__recv recv
+recvfrom	-	recvfrom	Ci:ibniBN	__libc_recvfrom	__recvfrom recvfrom
+recvmsg		-	recvmsg		Ci:ipi	__libc_recvmsg	__recvmsg recvmsg
+send		-	send		Ci:ibni	__libc_send	__send send
+sendmsg		-	sendmsg		Ci:ipi	__libc_sendmsg	__sendmsg sendmsg
+sendto		-	sendto		Ci:ibnibn	__libc_sendto	__sendto sendto
 setsockopt	-	setsockopt	i:iiibn	__setsockopt	setsockopt
 shutdown	-	shutdown	i:ii	__shutdown	shutdown
 socket		-	socket		i:iii	__socket	socket
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list b/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
index 43002a51c6..a34e49246e 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
@@ -1,9 +1,9 @@
 # File name	Caller	Syscall name	# args	Strong name	Weak names
 
 # Whee! 64-bit systems naturally implement llseek.
-llseek		EXTRA	lseek		3	__llseek	llseek	__libc_lseek64 __lseek64 lseek64
-pread		-	pread		4	__libc_pread	__libc_pread64 __pread pread __pread64 pread64
-pwrite		-	pwrite		4	__libc_pwrite	__libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
+llseek		EXTRA	lseek		C:3	__llseek	llseek	__libc_lseek64 __lseek64 lseek64
+pread		-	pread		C:4	__libc_pread	__libc_pread64 __pread pread __pread64 pread64
+pwrite		-	pwrite		C:4	__libc_pwrite	__libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
 fstatfs		-	fstatfs		2	__fstatfs	fstatfs __fstatfs64 fstatfs64
 statfs		-	statfs		2	__statfs	statfs statfs64
 getrlimit	-	getrlimit	2	__getrlimit	getrlimit getrlimit64
@@ -15,20 +15,20 @@ readahead	-	readahead	3	__readahead	readahead
 sendfile	-	sendfile	i:iipi	sendfile	sendfile64
 
 # Override select.S in parent directory:
-select		-	select		5	__select	select
-accept		-	accept		3	__libc_accept	__accept accept
+select		-	select		C:5	__select	select
+accept		-	accept		C:3	__libc_accept	__accept accept
 bind		-	bind		3	__bind		bind
-connect		-	connect		3	__libc_connect	__connect_internal __connect connect
+connect		-	connect		C:3	__libc_connect	__connect_internal __connect connect
 getpeername	-	getpeername	3	__getpeername	getpeername
 getsockname	-	getsockname	3	__getsockname	getsockname
 getsockopt	-	getsockopt	5	__getsockopt	getsockopt
 listen		-	listen		2	__listen	listen
-recv		-	recv		4	__libc_recv	__recv recv
-recvfrom	-	recvfrom	6	__libc_recvfrom	__recvfrom recvfrom
-recvmsg		-	recvmsg		3	__libc_recvmsg	__recvmsg recvmsg
-send		-	send		4	__libc_send	__send send
-sendmsg		-	sendmsg		3	__libc_sendmsg	__sendmsg sendmsg
-sendto		-	sendto		6	__libc_sendto	__sendto sendto
+recv		-	recv		C:4	__libc_recv	__recv recv
+recvfrom	-	recvfrom	C:6	__libc_recvfrom	__recvfrom recvfrom
+recvmsg		-	recvmsg		C:3	__libc_recvmsg	__recvmsg recvmsg
+send		-	send		C:4	__libc_send	__send send
+sendmsg		-	sendmsg		C:3	__libc_sendmsg	__sendmsg sendmsg
+sendto		-	sendto		C:6	__libc_sendto	__sendto sendto
 setsockopt	-	setsockopt	5	__setsockopt	setsockopt
 shutdown	-	shutdown	2	__shutdown	shutdown
 socketpair	-	socketpair	4	__socketpair	socketpair
diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list
index ce0f58bb0a..16eae75f2f 100644
--- a/sysdeps/unix/sysv/linux/syscalls.list
+++ b/sysdeps/unix/sysv/linux/syscalls.list
@@ -4,7 +4,7 @@ adjtimex	adjtime	adjtimex	i:p	__adjtimex	adjtimex ntp_adjtime __adjtimex_interna
 bdflush		EXTRA	bdflush		i:ii	bdflush
 capget		EXTRA	capget		i:pp	capget
 capset		EXTRA	capset		i:pp	capset
-creat		-	creat		i:si	__libc_creat creat
+creat		-	creat		Ci:si	__libc_creat creat
 create_module	EXTRA	create_module	3	create_module
 delete_module	EXTRA	delete_module	3	delete_module
 fdatasync	-	fdatasync	i:i	fdatasync
@@ -33,9 +33,9 @@ mount		EXTRA	mount		i:sssip	__mount	mount
 mremap		EXTRA	mremap		b:aini	__mremap	mremap
 munlock		-	munlock		i:ai	munlock
 munlockall	-	munlockall	i:	munlockall
-nanosleep	-	nanosleep	i:pp	__libc_nanosleep	__nanosleep nanosleep
+nanosleep	-	nanosleep	Ci:pp	__libc_nanosleep	__nanosleep nanosleep
 nfsservctl	EXTRA	nfsservctl	i:ipp	nfsservctl
-pause		-	pause		i:	__libc_pause	pause
+pause		-	pause		Ci:	__libc_pause	pause
 personality	init-first personality	i:i	__personality	personality
 pipe		-	pipe		i:f	__pipe		pipe
 pivot_root	EXTRA	pivot_root	i:ss	pivot_root
@@ -52,7 +52,7 @@ sched_setaffinity -	sched_setaffinity	i:iip	sched_setaffinity
 sched_setp	-	sched_setparam	i:ip	__sched_setparam	sched_setparam
 sched_sets	-	sched_setscheduler	i:iip	__sched_setscheduler	sched_setscheduler
 sched_yield	-	sched_yield	i:	__sched_yield	sched_yield
-select		-	_newselect	i:iPPPP	__select	__libc_select select
+select		-	_newselect	Ci:iPPPP	__select	__libc_select select
 sendfile	-	sendfile	i:iipi	sendfile
 sendfile64	-	sendfile64	i:iipi	sendfile64
 setfsgid	EXTRA	setfsgid	i:i	setfsgid
@@ -68,7 +68,7 @@ uselib		EXTRA	uselib		i:s	uselib
 wait4		-	wait4		i:iWiP	__wait4		wait4
 
 chown		-	chown		i:sii	__libc_chown	__chown chown
-fcntl		-	fcntl		i:iiF	__libc_fcntl	__fcntl fcntl
+fcntl		-	fcntl		Ci:iiF	__libc_fcntl	__fcntl fcntl
 
 setxattr	EXTRA	setxattr	i:sspii	setxattr
 lsetxattr	EXTRA	lsetxattr	i:sspii	lsetxattr
diff --git a/sysdeps/unix/sysv/linux/x86_64/syscalls.list b/sysdeps/unix/sysv/linux/x86_64/syscalls.list
index 2bae164fd9..a5c1288f61 100644
--- a/sysdeps/unix/sysv/linux/x86_64/syscalls.list
+++ b/sysdeps/unix/sysv/linux/x86_64/syscalls.list
@@ -3,9 +3,9 @@
 arch_prctl	EXTRA	arch_prctl	i:ii	__arch_prctl	arch_prctl
 mmap		-	mmap		b:aniiii __mmap		mmap __mmap64 mmap64
 modify_ldt	EXTRA	modify_ldt	i:ipi	__modify_ldt	modify_ldt
-llseek		EXTRA	lseek		i:iii	__libc_lseek64	__llseek llseek __lseek64 lseek64
-pread		-	pread		i:ibni	__libc_pread	__libc_pread64 __pread pread __pread64 pread64
-pwrite		-	pwrite		i:ibni	__libc_pwrite	__libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
+llseek		EXTRA	lseek		Ci:iii	__libc_lseek64	__llseek llseek __lseek64 lseek64
+pread		-	pread		Ci:ibni	__libc_pread	__libc_pread64 __pread pread __pread64 pread64
+pwrite		-	pwrite		Ci:ibni	__libc_pwrite	__libc_pwrite64 __pwrite pwrite __pwrite64 pwrite64
 fstatfs		-	fstatfs		i:ip	__fstatfs	fstatfs __fstatfs64 fstatfs64
 statfs		-	statfs		i:sp	__statfs	statfs statfs64
 getrlimit	-	getrlimit	i:ip	__getrlimit	getrlimit getrlimit64
@@ -30,17 +30,17 @@ semctl		-	semctl		i:iiii	__semctl	semctl
 
 
 # proper socket implementations:
-accept		-	accept		i:iBN	__libc_accept	__accept accept
+accept		-	accept		Ci:iBN	__libc_accept	__accept accept
 bind		-	bind		i:ipi	__bind		bind
-connect		-	connect		i:ipi	__libc_connect	__connect_internal __connect connect
+connect		-	connect		Ci:ipi	__libc_connect	__connect_internal __connect connect
 getpeername	-	getpeername	i:ipp	__getpeername	getpeername
 getsockname	-	getsockname	i:ipp	__getsockname	getsockname
 getsockopt	-	getsockopt	i:iiiBN	__getsockopt	getsockopt
 listen		-	listen		i:ii	__listen	listen
-recvfrom	-	recvfrom	i:ibniBN	__libc_recvfrom	__recvfrom recvfrom
-recvmsg		-	recvmsg		i:ipi	__libc_recvmsg	__recvmsg recvmsg
-sendmsg		-	sendmsg		i:ipi	__libc_sendmsg	__sendmsg sendmsg
-sendto		-	sendto		i:ibnibn	__libc_sendto	__sendto sendto
+recvfrom	-	recvfrom	Ci:ibniBN	__libc_recvfrom	__recvfrom recvfrom
+recvmsg		-	recvmsg		Ci:ipi	__libc_recvmsg	__recvmsg recvmsg
+sendmsg		-	sendmsg		Ci:ipi	__libc_sendmsg	__sendmsg sendmsg
+sendto		-	sendto		Ci:ibnibn	__libc_sendto	__sendto sendto
 setsockopt	-	setsockopt	i:iiibn	__setsockopt	setsockopt
 shutdown	-	shutdown	i:ii	__shutdown	shutdown
 socket		-	socket		i:iii	__socket	socket
diff --git a/sysdeps/unix/sysv/syscalls.list b/sysdeps/unix/sysv/syscalls.list
index 1d37af8391..d945ff014e 100644
--- a/sysdeps/unix/sysv/syscalls.list
+++ b/sysdeps/unix/sysv/syscalls.list
@@ -3,8 +3,8 @@
 alarm		-	alarm		i:i	alarm
 ftime		-	ftime		i:p	ftime
 nice		-	nice		i:i	nice
-pause		-	pause		i:	pause
-poll		-	poll		i:pii	poll
+pause		-	pause		Ci:	pause
+poll		-	poll		Ci:pii	poll
 s_getdents	getdents getdents	i:ipi	__getdents
 setrlimit	-	setrlimit	i:ip	__setrlimit	setrlimit
 settimeofday	-	settimeofday	i:PP	__settimeofday	settimeofday