strace: add 4.5.14, arm-eabi patch by drow
authorPhilipp Zabel <philipp.zabel@gmail.com>
Tue, 4 Apr 2006 18:59:03 +0000 (18:59 +0000)
committerOpenEmbedded Project <openembedded-devel@lists.openembedded.org>
Tue, 4 Apr 2006 18:59:03 +0000 (18:59 +0000)
packages/strace/strace-4.5.14/.mtn2git_empty [new file with mode: 0644]
packages/strace/strace-4.5.14/arm-eabi.patch [new file with mode: 0644]
packages/strace/strace_4.5.14.bb [new file with mode: 0644]

diff --git a/packages/strace/strace-4.5.14/.mtn2git_empty b/packages/strace/strace-4.5.14/.mtn2git_empty
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/packages/strace/strace-4.5.14/arm-eabi.patch b/packages/strace/strace-4.5.14/arm-eabi.patch
new file mode 100644 (file)
index 0000000..53e27f8
--- /dev/null
@@ -0,0 +1,65 @@
+2006-03-30  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * process.c (change_syscall): Add ARM support.
+       * syscall.c (get_scno): Handle ARM EABI.
+
+Index: strace/process.c
+===================================================================
+--- strace.orig/process.c      2006-03-30 17:36:14.000000000 -0500
++++ strace/process.c   2006-03-30 17:44:16.000000000 -0500
+@@ -694,6 +694,16 @@ int new;
+                                    0x100000 | new) < 0)
+                        return -1;
+        return 0;
++#elif defined(ARM)
++       /* Some kernels support this, some (pre-2.6.16 or so) don't.  */
++# ifndef PTRACE_SET_SYSCALL
++#  define PTRACE_SET_SYSCALL 23
++# endif
++
++       if (ptrace (PTRACE_SET_SYSCALL, tcp->pid, 0, new) != 0)
++              return -1;
++
++       return 0;
+ #else
+ #warning Do not know how to handle change_syscall for this architecture
+ #endif /* architecture */
+Index: strace/syscall.c
+===================================================================
+--- strace.orig/syscall.c      2006-03-30 17:36:14.000000000 -0500
++++ strace/syscall.c   2006-03-30 17:44:16.000000000 -0500
+@@ -1108,16 +1108,25 @@ struct tcb *tcp;
+                               return 0;
+                       }
+-                      if ((scno & 0x0ff00000) != 0x0f900000) {
+-                              fprintf(stderr, "syscall: unknown syscall trap 0x%08lx\n",
+-                                      scno);
+-                              return -1;
+-                      }
++                      /* Handle the EABI syscall convention.  We do not
++                         bother converting structures between the two
++                         ABIs, but basic functionality should work even
++                         if strace and the traced program have different
++                         ABIs.  */
++                      if (scno == 0xef000000) {
++                              scno = regs.ARM_r7;
++                      } else {
++                              if ((scno & 0x0ff00000) != 0x0f900000) {
++                                      fprintf(stderr, "syscall: unknown syscall trap 0x%08lx\n",
++                                              scno);
++                                      return -1;
++                              }
+-                      /*
+-                       * Fixup the syscall number
+-                       */
+-                      scno &= 0x000fffff;
++                              /*
++                               * Fixup the syscall number
++                               */
++                              scno &= 0x000fffff;
++                      }
+               }
+               if (tcp->flags & TCB_INSYSCALL) {
diff --git a/packages/strace/strace_4.5.14.bb b/packages/strace/strace_4.5.14.bb
new file mode 100644 (file)
index 0000000..cc15d96
--- /dev/null
@@ -0,0 +1,12 @@
+LICENSE = "GPL"
+SECTION = "console/utils"
+PR = "r0"
+
+DESCRIPTION = "strace is a system call tracing tool."
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/strace/strace-${PV}.tar.bz2 \
+          file://arm-eabi.patch;patch=1"
+
+inherit autotools
+
+export INCLUDES = "-I. -I./linux"