Update.
[kopensolaris-gnu/glibc.git] / linuxthreads / wrapsyscall.c
index a8ab857..a260c97 100644 (file)
@@ -1,5 +1,5 @@
 /* Wrapper arpund system calls to provide cancelation points.
 /* Wrapper arpund system calls to provide cancelation points.
-   Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
@@ -31,7 +31,7 @@
 #include <sys/socket.h>
 
 
 #include <sys/socket.h>
 
 
-#ifndef PIC
+#ifndef SHARED
 /* We need a hook to force this file to be linked in when static
    libpthread is used.  */
 const int __pthread_provide_wrappers = 0;
 /* We need a hook to force this file to be linked in when static
    libpthread is used.  */
 const int __pthread_provide_wrappers = 0;
@@ -41,6 +41,7 @@ const int __pthread_provide_wrappers = 0;
 #define CANCELABLE_SYSCALL(res_type, name, param_list, params) \
 res_type __libc_##name param_list;                                           \
 res_type                                                                     \
 #define CANCELABLE_SYSCALL(res_type, name, param_list, params) \
 res_type __libc_##name param_list;                                           \
 res_type                                                                     \
+__attribute__ ((weak))                                                       \
 name param_list                                                                      \
 {                                                                            \
   res_type result;                                                           \
 name param_list                                                                      \
 {                                                                            \
   res_type result;                                                           \
@@ -54,6 +55,7 @@ name param_list                                                                     \
 #define CANCELABLE_SYSCALL_VA(res_type, name, param_list, params, last_arg) \
 res_type __libc_##name param_list;                                           \
 res_type                                                                     \
 #define CANCELABLE_SYSCALL_VA(res_type, name, param_list, params, last_arg) \
 res_type __libc_##name param_list;                                           \
 res_type                                                                     \
+__attribute__ ((weak))                                                       \
 name param_list                                                                      \
 {                                                                            \
   res_type result;                                                           \
 name param_list                                                                      \
 {                                                                            \
   res_type result;                                                           \
@@ -103,6 +105,7 @@ CANCELABLE_SYSCALL (int, msync, (__ptr_t addr, size_t length, int flags),
 CANCELABLE_SYSCALL (int, nanosleep, (const struct timespec *requested_time,
                                     struct timespec *remaining),
                    (requested_time, remaining))
 CANCELABLE_SYSCALL (int, nanosleep, (const struct timespec *requested_time,
                                     struct timespec *remaining),
                    (requested_time, remaining))
+strong_alias (nanosleep, __nanosleep)
 
 
 /* open(2).  */
 
 
 /* open(2).  */
@@ -193,31 +196,31 @@ CANCELABLE_SYSCALL (int, connect, (int fd, __CONST_SOCKADDR_ARG addr,
 strong_alias (connect, __connect)
 
 /* recv(2).  */
 strong_alias (connect, __connect)
 
 /* recv(2).  */
-CANCELABLE_SYSCALL (int, recv, (int fd, __ptr_t buf, size_t n, int flags),
+CANCELABLE_SYSCALL (ssize_t, recv, (int fd, __ptr_t buf, size_t n, int flags),
                    (fd, buf, n, flags))
 
 /* recvfrom(2).  */
                    (fd, buf, n, flags))
 
 /* recvfrom(2).  */
-CANCELABLE_SYSCALL (int, recvfrom, (int fd, __ptr_t buf, size_t n, int flags,
-                                   __SOCKADDR_ARG addr, socklen_t *addr_len),
+CANCELABLE_SYSCALL (ssize_t, recvfrom, (int fd, __ptr_t buf, size_t n, int flags,
+                                       __SOCKADDR_ARG addr, socklen_t *addr_len),
                    (fd, buf, n, flags, addr, addr_len))
 
 /* recvmsg(2).  */
                    (fd, buf, n, flags, addr, addr_len))
 
 /* recvmsg(2).  */
-CANCELABLE_SYSCALL (int, recvmsg, (int fd, struct msghdr *message, int flags),
+CANCELABLE_SYSCALL (ssize_t, recvmsg, (int fd, struct msghdr *message, int flags),
                    (fd, message, flags))
 
 /* send(2).  */
                    (fd, message, flags))
 
 /* send(2).  */
-CANCELABLE_SYSCALL (int, send, (int fd, const __ptr_t buf, size_t n,
-                               int flags),
+CANCELABLE_SYSCALL (ssize_t, send, (int fd, const __ptr_t buf, size_t n,
+                                   int flags),
                    (fd, buf, n, flags))
 strong_alias (send, __send)
 
 /* sendmsg(2).  */
                    (fd, buf, n, flags))
 strong_alias (send, __send)
 
 /* sendmsg(2).  */
-CANCELABLE_SYSCALL (int, sendmsg, (int fd, const struct msghdr *message,
-                                  int flags),
+CANCELABLE_SYSCALL (ssize_t, sendmsg, (int fd, const struct msghdr *message,
+                                      int flags),
                    (fd, message, flags))
 
 /* sendto(2).  */
                    (fd, message, flags))
 
 /* sendto(2).  */
-CANCELABLE_SYSCALL (int, sendto, (int fd, const __ptr_t buf, size_t n,
-                                 int flags, __CONST_SOCKADDR_ARG addr,
-                                 socklen_t addr_len),
+CANCELABLE_SYSCALL (ssize_t, sendto, (int fd, const __ptr_t buf, size_t n,
+                                     int flags, __CONST_SOCKADDR_ARG addr,
+                                     socklen_t addr_len),
                    (fd, buf, n, flags, addr, addr_len))
                    (fd, buf, n, flags, addr, addr_len))