[PATCH] Fix ARM syscall_p to handle Thumb-2 mode.

Zach Welch zwelch at codesourcery.com
Thu Sep 30 23:56:59 UTC 2010


Identify ARM syscalls in Thumb-2 mode.  Tested on IGEP v2 board.
Fixes LP:639796.

Signed-off-by: Zach Welch <zwelch at codesourcery.com>
---
 ChangeLog                     |    4 ++++
 sysdeps/linux-gnu/arm/trace.c |    3 ++-
 2 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 49b785f..0501982 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2010-09-30  Zach Welch <zwelch at codesourcery.com>
+
+	* Improve ARM syscall_p to handle Thumb-2 syscalls.
+
 2009-07-25  Juan Cespedes <cespedes at debian.org>
 
 	* New release 0.5.3
diff --git a/sysdeps/linux-gnu/arm/trace.c b/sysdeps/linux-gnu/arm/trace.c
index 10f7cc4..f68f2a9 100644
--- a/sysdeps/linux-gnu/arm/trace.c
+++ b/sysdeps/linux-gnu/arm/trace.c
@@ -49,7 +49,8 @@ syscall_p(Process *proc, int status, int *sysnum) {
 		int insn = ptrace(PTRACE_PEEKTEXT, proc->pid, pc - 4, 0);
 		int ip = ptrace(PTRACE_PEEKUSER, proc->pid, off_ip, 0);
 
-		if (insn == 0xef000000 || insn == 0x0f000000) {
+		if (insn == 0xef000000 || insn == 0x0f000000
+		    || (insn & 0xffff0000) == 0xdf000000) {
 			/* EABI syscall */
 			*sysnum = ptrace(PTRACE_PEEKUSER, proc->pid, off_r7, 0);
 		} else if ((insn & 0xfff00000) == 0xef900000) {
-- 
1.7.1


--------------050005050408010109080205--



More information about the Ltrace-devel mailing list