]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Fix some 64-bit sparc build warnings.
authorDavid S. Miller <davem@davemloft.net>
Mon, 12 Mar 2012 03:13:55 +0000 (20:13 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 12 Mar 2012 03:13:55 +0000 (20:13 -0700)
* sysdeps/unix/sysv/linux/sparc/sparc64/makecontext.c
(__makecontext): Fix signedness of pointer casts setting up 'sp'.
* sysdeps/unix/sysv/linux/sparc/sysdep.h (INLINE_SYSCALL) Use 'long'
for 'resultvar' otherwise things get truncated on 64-bit.

ChangeLog
sysdeps/unix/sysv/linux/sparc/sparc64/makecontext.c
sysdeps/unix/sysv/linux/sparc/sysdep.h

index 29b7c67e9e6858b73a7519a27509e0c5056e8bd3..7b6bc84be0276aaada802eef8184b02e4a66476c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2012-03-11  David S. Miller  <davem@davemloft.net>
 
+       * sysdeps/unix/sysv/linux/sparc/sparc64/makecontext.c
+       (__makecontext): Fix signedness of pointer casts setting up 'sp'.
+       * sysdeps/unix/sysv/linux/sparc/sysdep.h (INLINE_SYSCALL) Use 'long'
+       for 'resultvar' otherwise things get truncated on 64-bit.
+
        * sysdeps/unix/sysv/linux/dl-osinfo.h (_dl_setup_stack_chk_guard):
        Fix masking out of the most significant byte of random value used.
 
index 3bb4e7a28b09a0bd526bb4a847f35b3d3572cced..e925040d14ad2cd3ca3d3226477e39787a9a116b 100644 (file)
@@ -29,9 +29,9 @@ __makecontext (ucontext_t *ucp, void (*func) (void), int argc, ...)
   va_list ap;
   int i;
 
-  sp = (long *) ((long) ucp->uc_stack.ss_sp + ucp->uc_stack.ss_size);
+  sp = (unsigned long *) ((long) ucp->uc_stack.ss_sp + ucp->uc_stack.ss_size);
   sp -= (argc > 6 ? argc : 6) + 32;
-  sp = (long *) (((long) sp) & -16L);
+  sp = (unsigned long *) (((long) sp) & -16L);
   topsp = sp + (argc > 6 ? argc : 6) + 16;
 
   ucp->uc_mcontext.mc_gregs[MC_PC] = (long) func;
index 542e94040ca3d27f16fb77b6d636474e0c4554f5..fc955c236cfec94fd732312b0329773497d2fd3c 100644 (file)
 #undef INLINE_SYSCALL
 #define INLINE_SYSCALL(name, nr, args...)                              \
 ({     INTERNAL_SYSCALL_DECL(err);                                     \
-       unsigned int resultvar = INTERNAL_SYSCALL(name, err, nr, args); \
+       unsigned long resultvar = INTERNAL_SYSCALL(name, err, nr, args);\
        if (INTERNAL_SYSCALL_ERROR_P (resultvar, err))                  \
          {                                                             \
            __set_errno (INTERNAL_SYSCALL_ERRNO (resultvar, err));      \
-           resultvar = 0xffffffff;                                     \
+           resultvar = (unsigned long) -1;                             \
          }                                                             \
-       (int) resultvar;                                                \
+       (long) resultvar;                                               \
 })
 
 #undef INTERNAL_SYSCALL_DECL