summaryrefslogtreecommitdiff
path: root/util.c
diff options
context:
space:
mode:
authorDmitry V. Levin <ldv@altlinux.org>2013-05-02 08:41:27 +0000
committerDmitry V. Levin <ldv@altlinux.org>2013-05-02 08:45:42 +0000
commit0b468833390a78395be48f70d582a6679ab28a76 (patch)
treeae2cb0150de949144edf77edd37343e24cc90ad6 /util.c
parent318b0dde768e0b2360082c50b286e003f914a49f (diff)
downloadstrace-0b468833390a78395be48f70d582a6679ab28a76.tar.gz
strace-0b468833390a78395be48f70d582a6679ab28a76.tar.bz2
strace-0b468833390a78395be48f70d582a6679ab28a76.tar.xz
x32: fix printllval-based decoders of i386 syscalls
* util.c (printllval) [X32]: Handle i386 personality.
Diffstat (limited to 'util.c')
-rw-r--r--util.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/util.c b/util.c
index 4e21d9f..e00c9a6 100644
--- a/util.c
+++ b/util.c
@@ -208,7 +208,15 @@ printllval(struct tcb *tcp, const char *format, int arg_no)
*/
tprintf(format, tcp->u_arg[arg_no]);
arg_no++;
-#elif defined LINUX_MIPSN32 || defined X32
+#elif defined X32
+ if (current_personality == 0) {
+ tprintf(format, tcp->ext_arg[arg_no]);
+ arg_no++;
+ } else {
+ tprintf(format, LONG_LONG(tcp->u_arg[arg_no], tcp->u_arg[arg_no + 1]));
+ arg_no += 2;
+ }
+#elif defined LINUX_MIPSN32
tprintf(format, tcp->ext_arg[arg_no]);
arg_no++;
#else