aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2012-03-11 20:13:55 -0700
committerDavid S. Miller <davem@davemloft.net>2012-03-11 20:13:55 -0700
commita1bcbd4035ac2483dc10da150d4db46f3e1744f8 (patch)
tree7b43c18665f102f4f1e8748c0f376f67fe8410fb
parentcb9d617437084b4ebf02e50c0a82c5dd2582029a (diff)
downloadglibc-a1bcbd4035ac2483dc10da150d4db46f3e1744f8.tar
glibc-a1bcbd4035ac2483dc10da150d4db46f3e1744f8.tar.gz
glibc-a1bcbd4035ac2483dc10da150d4db46f3e1744f8.tar.bz2
glibc-a1bcbd4035ac2483dc10da150d4db46f3e1744f8.zip
Fix some 64-bit sparc build warnings.
* 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.
-rw-r--r--ChangeLog5
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/makecontext.c4
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sysdep.h6
3 files changed, 10 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 29b7c67e9e..7b6bc84be0 100644
--- 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.
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/makecontext.c b/sysdeps/unix/sysv/linux/sparc/sparc64/makecontext.c
index 3bb4e7a28b..e925040d14 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/makecontext.c
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/makecontext.c
@@ -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;
diff --git a/sysdeps/unix/sysv/linux/sparc/sysdep.h b/sysdeps/unix/sysv/linux/sparc/sysdep.h
index 542e94040c..fc955c236c 100644
--- a/sysdeps/unix/sysv/linux/sparc/sysdep.h
+++ b/sysdeps/unix/sysv/linux/sparc/sysdep.h
@@ -22,13 +22,13 @@
#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