arm, aarch64, ppc: fix printllval-based decoders

* util.c (printllval) [ARM || POWERPC]: Align argument number.
[AARCH64]: Align argument number in 32bit mode.
* file.c (sys_fadvise64_64) [ARM || POWERPC]: Remove no longer needed
printllval workaround.
[AARCH64]: Fix printing POSIX_FADV_* constants in 32bit mode.
This commit is contained in:
Дмитрий Левин 2013-05-03 22:27:45 +00:00
parent d648f29cc3
commit a55b6b193c
2 changed files with 7 additions and 7 deletions

6
file.c
View File

@ -2681,13 +2681,9 @@ sys_fadvise64_64(struct tcb *tcp)
if (entering(tcp)) {
int argn;
printfd(tcp, tcp->u_arg[0]);
#if defined ARM || defined POWERPC
argn = printllval(tcp, ", %lld, ", 2);
#else
argn = printllval(tcp, ", %lld, ", 1);
#endif
argn = printllval(tcp, "%lld, ", argn);
#if defined ARM || defined POWERPC
#if defined ARM || defined AARCH64 || defined POWERPC
printxval(advise, tcp->u_arg[1], "POSIX_FADV_???");
#else
printxval(advise, tcp->u_arg[argn], "POSIX_FADV_???");

8
util.c
View File

@ -186,8 +186,8 @@ printllval(struct tcb *tcp, const char *format, int arg_no)
tprintf(format, tcp->u_arg[arg_no]);
arg_no++;
} else {
# if defined(POWERPC64)
/* Align arg_no to next even number */
# if defined(AARCH64) || defined(POWERPC64)
/* Align arg_no to the next even number. */
arg_no = (arg_no + 1) & 0xe;
# endif
tprintf(format, LONG_LONG(tcp->u_arg[arg_no], tcp->u_arg[arg_no + 1]));
@ -215,6 +215,10 @@ printllval(struct tcb *tcp, const char *format, int arg_no)
# if SIZEOF_LONG > 4
# error BUG: must not combine two args for long long on this arch
# endif
#if defined(ARM) || defined(POWERPC)
/* Align arg_no to the next even number. */
arg_no = (arg_no + 1) & 0xe;
#endif
tprintf(format, LONG_LONG(tcp->u_arg[arg_no], tcp->u_arg[arg_no + 1]));
arg_no += 2;
#endif