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:
parent
d648f29cc3
commit
a55b6b193c
6
file.c
6
file.c
@ -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
8
util.c
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user