diff options
Diffstat (limited to 'packages')
-rw-r--r-- | packages/strace/strace-4.5.14/.mtn2git_empty | 0 | ||||
-rw-r--r-- | packages/strace/strace-4.5.14/arm-eabi.patch | 65 | ||||
-rw-r--r-- | packages/strace/strace_4.5.14.bb | 12 |
3 files changed, 77 insertions, 0 deletions
diff --git a/packages/strace/strace-4.5.14/.mtn2git_empty b/packages/strace/strace-4.5.14/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/strace/strace-4.5.14/.mtn2git_empty 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 index 0000000000..53e27f8ce8 --- /dev/null +++ b/packages/strace/strace-4.5.14/arm-eabi.patch @@ -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 index 0000000000..cc15d962ae --- /dev/null +++ b/packages/strace/strace_4.5.14.bb @@ -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" |