commit:     3ae4d849ae4aaaf469bc9a58b01d8a2b2931c14a
Author:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 20 09:48:47 2015 +0000
Commit:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
CommitDate: Sun Dec 20 09:48:47 2015 +0000
URL:        https://gitweb.gentoo.org/proj/sandbox.git/commit/?id=3ae4d849

libsandbox: new arm ptrace port

Signed-off-by: Mike Frysinger <vapier <AT> gentoo.org>

 libsandbox/trace/linux/arch.c |  2 ++
 libsandbox/trace/linux/arm.c  | 22 ++++++++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/libsandbox/trace/linux/arch.c b/libsandbox/trace/linux/arch.c
index 53461d6..83b6977 100644
--- a/libsandbox/trace/linux/arch.c
+++ b/libsandbox/trace/linux/arch.c
@@ -7,6 +7,8 @@
 #if !defined(HAVE_PTRACE) || !defined(HAVE_SYS_PTRACE_H) || \
     !defined(HAVE_SYS_USER_H) || !defined(PTRACE_SETOPTIONS)
 # define SB_NO_TRACE_ARCH
+#elif defined(__arm__)
+# include "arm.c"
 #elif defined(__bfin__)
 # include "bfin.c"
 #elif defined(__hppa__)

diff --git a/libsandbox/trace/linux/arm.c b/libsandbox/trace/linux/arm.c
new file mode 100644
index 0000000..fbbf7cb
--- /dev/null
+++ b/libsandbox/trace/linux/arm.c
@@ -0,0 +1,22 @@
+#define trace_reg_ret ARM_r0
+
+static int trace_get_sysnum(void *vregs)
+{
+       trace_regs *regs = vregs;
+       return regs->ARM_r7;
+}
+static void trace_set_sysnum(void *vregs, long nr)
+{
+       trace_regs *regs = vregs;
+       regs->ARM_r0 = nr;
+       trace_set_regs(regs);
+}
+
+static unsigned long trace_arg(void *vregs, int num)
+{
+       trace_regs *regs = vregs;
+       if (num < 7)
+               return regs->uregs[num - 1];
+       else
+               return -1;
+}

Reply via email to