diff options
author | David S. Miller <davem@davemloft.net> | 2012-03-11 20:13:55 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-03-11 20:13:55 -0700 |
commit | a1bcbd4035ac2483dc10da150d4db46f3e1744f8 (patch) | |
tree | 7b43c18665f102f4f1e8748c0f376f67fe8410fb | |
parent | cb9d617437084b4ebf02e50c0a82c5dd2582029a (diff) | |
download | glibc-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-- | ChangeLog | 5 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/makecontext.c | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sysdep.h | 6 |
3 files changed, 10 insertions, 5 deletions
@@ -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 |