about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--linuxthreads/ChangeLog5
-rw-r--r--linuxthreads/wrapsyscall.c4
-rw-r--r--sunrpc/xdr.c10
4 files changed, 22 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index f175d84f2e..9fdb6d9737 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2000-07-14  Ulrich Drepper  <drepper@redhat.com>
+
+	* sunrpc/xdr.c (xdr_u_long): Handle reading of unsigned long on
+	64-bit architecture correctly [PR libc/1794].
+
 2000-07-13  Ulrich Drepper  <drepper@redhat.com>
 
 	* elf/Versions (ld): Export _dl_out_of_memory for GLIBC_2.2.
diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog
index 8bd9c75cdc..e205a2e3ec 100644
--- a/linuxthreads/ChangeLog
+++ b/linuxthreads/ChangeLog
@@ -1,3 +1,8 @@
+2000-07-13  Ulrich Drepper  <drepper@redhat.com>
+
+	* wrapsyscall.c: Mark non-__ protected names as weak.
+	PR libc/1466.
+
 2000-07-12  Bruno Haible  <haible@clisp.cons.org>
 
 	* Examples/ex8.c: Include <sys/wait.h>, not <wait.h>.
diff --git a/linuxthreads/wrapsyscall.c b/linuxthreads/wrapsyscall.c
index 7d3f8ac483..5563eb0e67 100644
--- a/linuxthreads/wrapsyscall.c
+++ b/linuxthreads/wrapsyscall.c
@@ -1,5 +1,5 @@
 /* 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 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
@@ -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								      \
+__attribute__ ((weak))							      \
 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								      \
+__attribute__ ((weak))							      \
 name param_list								      \
 {									      \
   res_type result;							      \
diff --git a/sunrpc/xdr.c b/sunrpc/xdr.c
index 0cb5f25332..e5d706dd20 100644
--- a/sunrpc/xdr.c
+++ b/sunrpc/xdr.c
@@ -181,7 +181,15 @@ xdr_u_long (XDR *xdrs, u_long *ulp)
   switch (xdrs->x_op)
     {
     case XDR_DECODE:
-      return XDR_GETLONG (xdrs, (long *) ulp);
+      {
+	long int tmp;
+
+	if (XDR_GETLONG (xdrs, &tmp) == FALSE)
+	  return FALSE;
+
+	*ulp = (uint32_t) tmp;
+	return TRUE;
+      }
 
     case XDR_ENCODE:
       return XDR_PUTLONG (xdrs, (long *) ulp);