summaryrefslogtreecommitdiff
path: root/ipc_sem.c
diff options
context:
space:
mode:
authorDmitry V. Levin <ldv@altlinux.org>2016-08-17 21:58:37 +0000
committerDmitry V. Levin <ldv@altlinux.org>2016-08-19 22:11:46 +0000
commit1a6470fc80031fc70b6c755e8d4f469bf98ad8aa (patch)
treec6dc95a4533859229764caceb898d7439c07ed23 /ipc_sem.c
parent4b69c4736cb9b44e0bd7bef16f7f8602b5d2f113 (diff)
downloadstrace-1a6470fc80031fc70b6c755e8d4f469bf98ad8aa.tar.gz
sparc64: fix decoding of the forth argument of semctl syscall
On sparc64, unlike all other architectures where semctl is an indirect ipc subcall, the forth argument is passed directly. * ipc_sem.c (SYS_FUNC(semctl)) [SPARC64]: Print 4th argument without indirection in case of native personality.
Diffstat (limited to 'ipc_sem.c')
-rw-r--r--ipc_sem.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/ipc_sem.c b/ipc_sem.c
index bf82f330c..e6172eefe 100644
--- a/ipc_sem.c
+++ b/ipc_sem.c
@@ -117,7 +117,11 @@ SYS_FUNC(semctl)
tprintf("%lu, %lu, ", tcp->u_arg[0], tcp->u_arg[1]);
PRINTCTL(semctl_flags, tcp->u_arg[2], "SEM_???");
tprints(", ");
- if (indirect_ipccall(tcp)) {
+ if (indirect_ipccall(tcp)
+#ifdef SPARC64
+ && current_personality != 0
+#endif
+ ) {
printnum_ptr(tcp, tcp->u_arg[3]);
} else {
tprintf("%#lx", tcp->u_arg[3]);