Fix ILP32 personality preadv/pwritev offset decoding on LP64 architectures

* io.c (print_llu_from_low_high_val) [SIZEOF_LONG == SIZEOF_LONG_LONG
&& SUPPORTED_PERSONALITIES > 1]: Properly handle the case of
current_wordsize < sizeof(long).
This commit is contained in:
Дмитрий Левин 2015-01-23 20:04:37 +00:00
parent df7aa2b19e
commit 5de5a7abd5

11
io.c
View File

@ -217,7 +217,16 @@ static void
print_llu_from_low_high_val(struct tcb *tcp, int arg)
{
#if SIZEOF_LONG == SIZEOF_LONG_LONG
tprintf("%lu", (unsigned long) tcp->u_arg[arg]);
# if SUPPORTED_PERSONALITIES > 1
if (current_wordsize == sizeof(long))
# endif
tprintf("%lu", (unsigned long) tcp->u_arg[arg]);
# if SUPPORTED_PERSONALITIES > 1
else
tprintf("%lu",
((unsigned long) tcp->u_arg[arg + 1] << current_wordsize * 8)
| (unsigned long) tcp->u_arg[arg]);
# endif
#elif defined(LINUX_MIPSN32)
tprintf("%llu", (unsigned long long) tcp->ext_arg[arg]);
#else