summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry V. Levin <ldv@altlinux.org>2013-05-06 18:23:01 +0000
committerDmitry V. Levin <ldv@altlinux.org>2013-05-06 18:23:01 +0000
commit8e096c4ec507d9de1dd2f0d86ae925eb34b57053 (patch)
tree7660f30dfba18cb47f355c98e82d2ca355b06c9e
parenta32b6837044c54957b9b90954e246a56c9bef403 (diff)
downloadstrace-8e096c4ec507d9de1dd2f0d86ae925eb34b57053.tar.gz
strace-8e096c4ec507d9de1dd2f0d86ae925eb34b57053.tar.bz2
strace-8e096c4ec507d9de1dd2f0d86ae925eb34b57053.tar.xz
ARM OABI: fix 64-bit arguments decoding
ARM OABI and ARM EABI have different function parameters passing rules, see commit v4.6-11-g7a5b08f for details. * util.c (printllval): Do not align argument number in case of ARM OABI. * file.c (sys_fadvise64_64): Likewise.
-rw-r--r--file.c2
-rw-r--r--util.c5
2 files changed, 5 insertions, 2 deletions
diff --git a/file.c b/file.c
index 07f1ad9..9a83287 100644
--- a/file.c
+++ b/file.c
@@ -2677,7 +2677,7 @@ sys_fadvise64_64(struct tcb *tcp)
printfd(tcp, tcp->u_arg[0]);
argn = printllval(tcp, ", %lld, ", 1);
argn = printllval(tcp, "%lld, ", argn);
-#if defined ARM || defined AARCH64 || defined POWERPC || defined XTENSA
+#if defined __ARM_EABI__ || defined AARCH64 || defined POWERPC || defined XTENSA
printxval(advise, tcp->u_arg[1], "POSIX_FADV_???");
#else
printxval(advise, tcp->u_arg[argn], "POSIX_FADV_???");
diff --git a/util.c b/util.c
index 77e939b..6acdbc2 100644
--- a/util.c
+++ b/util.c
@@ -207,7 +207,10 @@ printllval(struct tcb *tcp, const char *format, int arg_no)
arg_no += 2;
}
#else
-# if defined(ARM) || defined(POWERPC) || defined(LINUX_MIPSO32) || defined(XTENSA)
+# if defined __ARM_EABI__ || \
+ defined LINUX_MIPSO32 || \
+ defined POWERPC || \
+ defined XTENSA
/* Align arg_no to the next even number. */
arg_no = (arg_no + 1) & 0xe;
# endif