summaryrefslogtreecommitdiffstats
path: root/src/arm32/registers.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/arm32/registers.c')
-rw-r--r--src/arm32/registers.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/arm32/registers.c b/src/arm32/registers.c
index d4eeb4d..1b7392a 100644
--- a/src/arm32/registers.c
+++ b/src/arm32/registers.c
@@ -96,17 +96,17 @@ bool step_syscall(pid_t current_pid, int proc_status, HashMap map)
}
// can't get some registers for some reason
- if (regs.ARM_ORIG_r0 != -1) {
+ if (regs.ARM_r7 != -1) {
could_read = true;
// If it's the same PID performing the same syscall (has same orig_rax) as last time, we don't care. Just means it's exiting the syscall.
// Might want to keep for debug mode? This might result in missing some output, in the case where two threads of the same process enter the same syscall before either exits,
// because they will both return the same PID to wait() when given SIGTRAP as part of the syscall-enter-exit loop. Might also result in double-printing,
// because if two threads (that report the same PID) enter two different syscalls before either exits, the "last" syscall for the PID won't be the entry by that thread.
- if (!is_exiting(current_pid, regs.ARM_ORIG_r0) /*|| Debug*/) {
+ if (!is_exiting(current_pid, regs.ARM_r7) /*|| Debug*/) {
check_syscall(current_pid, (void*)&regs, map);
}
LastSyscall.pid = current_pid;
- LastSyscall.syscall = regs.ARM_ORIG_r0;
+ LastSyscall.syscall = regs.ARM_r7;
check_ptrace_event(current_pid, proc_status, map);
// continue, catching next entry or exit from syscall
res = ptrace(PTRACE_SYSCALL, current_pid, 0, 0);