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.
This commit is contained in:
David S. Miller 2012-03-11 20:13:55 -07:00
parent cb9d617437
commit a1bcbd4035
3 changed files with 10 additions and 5 deletions

View File

@ -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.

View 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;

View File

@ -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