From: David S. Miller Date: Mon, 12 Mar 2012 03:13:55 +0000 (-0700) Subject: Fix some 64-bit sparc build warnings. X-Git-Tag: glibc-2.16-tps~824 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a1bcbd4035ac2483dc10da150d4db46f3e1744f8;p=platform%2Fupstream%2Fglibc.git 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. --- diff --git a/ChangeLog b/ChangeLog index 29b7c67..7b6bc84 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2012-03-11 David S. Miller + * 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 3bb4e7a..e925040 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 542e940..fc955c2 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