diff options
author | Philipp Zabel <philipp.zabel@gmail.com> | 2006-04-04 18:59:03 +0000 |
---|---|---|
committer | OpenEmbedded Project <openembedded-devel@lists.openembedded.org> | 2006-04-04 18:59:03 +0000 |
commit | 7cb85885fc5a7c80c6a36c835e6d05c1aa0ee20e (patch) | |
tree | 776b75678c98fc58c3d29be11f284feb9610b129 /packages/strace/strace-4.5.14/arm-eabi.patch | |
parent | 6998b703e74d8dfc71f0a87757811ae19238d656 (diff) |
strace: add 4.5.14, arm-eabi patch by drow
Diffstat (limited to 'packages/strace/strace-4.5.14/arm-eabi.patch')
-rw-r--r-- | packages/strace/strace-4.5.14/arm-eabi.patch | 65 |
1 files changed, 65 insertions, 0 deletions
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) { |