summaryrefslogtreecommitdiff
path: root/patches/ltrace/0.5.2/120-debian-ltrace-0.5.2-2.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/ltrace/0.5.2/120-debian-ltrace-0.5.2-2.patch')
-rw-r--r--patches/ltrace/0.5.2/120-debian-ltrace-0.5.2-2.patch240
1 files changed, 0 insertions, 240 deletions
diff --git a/patches/ltrace/0.5.2/120-debian-ltrace-0.5.2-2.patch b/patches/ltrace/0.5.2/120-debian-ltrace-0.5.2-2.patch
deleted file mode 100644
index 6d62315..0000000
--- a/patches/ltrace/0.5.2/120-debian-ltrace-0.5.2-2.patch
+++ /dev/null
@@ -1,240 +0,0 @@
---- ltrace-0.5.2.orig/TODO
-+++ ltrace-0.5.2/TODO
-@@ -37,3 +37,4 @@
- * debug: change "-d" option to be something like "-d elf,events", or "-d breakpoints"
- * Find out if a process is sharing memory with its parent?
- * When using -p, find out if that process is sharing memory with other procs
-+* After a clone(), syscalls may be seen as sysrets in s390 (see trace.c:syscall_p())
---- ltrace-0.5.2.orig/process_event.c
-+++ ltrace-0.5.2/process_event.c
-@@ -170,7 +170,7 @@
- enable_breakpoint(proc->pid, proc->breakpoint_being_enabled);
- proc->breakpoint_being_enabled = NULL;
- }
-- if (proc->parent->state == STATE_ATTACHED && options.follow) {
-+ if (options.follow) {
- proc->state = STATE_ATTACHED;
- } else {
- proc->state = STATE_IGNORED;
---- ltrace-0.5.2.orig/sysdeps/linux-gnu/ppc/trace.c
-+++ ltrace-0.5.2/sysdeps/linux-gnu/ppc/trace.c
-@@ -50,9 +50,9 @@
- *sysnum =
- (int)ptrace(PTRACE_PEEKUSER, proc->pid,
- sizeof(long) * PT_R0, 0);
-- if (proc->callstack_depth > 0
-- && proc->callstack[proc->callstack_depth -
-- 1].is_syscall) {
-+ if (proc->callstack_depth > 0 &&
-+ proc->callstack[proc->callstack_depth - 1].is_syscall &&
-+ proc->callstack[proc->callstack_depth - 1].c_un.syscall == *sysnum) {
- return 2;
- }
- return 1;
---- ltrace-0.5.2.orig/sysdeps/linux-gnu/i386/trace.c
-+++ ltrace-0.5.2/sysdeps/linux-gnu/i386/trace.c
-@@ -32,7 +32,8 @@
- *sysnum = ptrace(PTRACE_PEEKUSER, proc->pid, 4 * ORIG_EAX, 0);
-
- if (proc->callstack_depth > 0 &&
-- proc->callstack[proc->callstack_depth - 1].is_syscall) {
-+ proc->callstack[proc->callstack_depth - 1].is_syscall &&
-+ proc->callstack[proc->callstack_depth - 1].c_un.syscall == *sysnum) {
- return 2;
- }
-
---- ltrace-0.5.2.orig/sysdeps/linux-gnu/ia64/trace.c
-+++ ltrace-0.5.2/sysdeps/linux-gnu/ia64/trace.c
-@@ -106,8 +106,8 @@
- if (insn == 0x1000000000 || insn == 0x1ffffffffff) {
- *sysnum = r15;
- if (proc->callstack_depth > 0 &&
-- proc->callstack[proc->callstack_depth -
-- 1].is_syscall) {
-+ proc->callstack[proc->callstack_depth - 1].is_syscall &&
-+ proc->callstack[proc->callstack_depth - 1].c_un.syscall == *sysnum) {
- return 2;
- }
- return 1;
---- ltrace-0.5.2.orig/sysdeps/linux-gnu/m68k/trace.c
-+++ ltrace-0.5.2/sysdeps/linux-gnu/m68k/trace.c
-@@ -36,9 +36,8 @@
- if (*sysnum >= 0) {
- depth = proc->callstack_depth;
- if (depth > 0 &&
-- proc->callstack[depth - 1].is_syscall &&
-- proc->callstack[depth - 1].c_un.syscall ==
-- *sysnum) {
-+ proc->callstack[depth - 1].is_syscall &&
-+ proc->callstack[depth - 1].c_un.syscall == *sysnum) {
- return 2;
- } else {
- return 1;
---- ltrace-0.5.2.orig/sysdeps/linux-gnu/alpha/trace.c
-+++ ltrace-0.5.2/sysdeps/linux-gnu/alpha/trace.c
-@@ -36,8 +36,9 @@
- return 0;
- *sysnum =
- ptrace(PTRACE_PEEKUSER, proc->pid, 0 /* REG_R0 */ , 0);
-- if (proc->callstack_depth > 0
-- && proc->callstack[proc->callstack_depth - 1].is_syscall) {
-+ if (proc->callstack_depth > 0 &&
-+ proc->callstack[proc->callstack_depth - 1].is_syscall &&
-+ proc->callstack[proc->callstack_depth - 1].c_un.syscall == *sysnum) {
- return 2;
- }
- if (*sysnum >= 0 && *sysnum < 500) {
---- ltrace-0.5.2.orig/sysdeps/linux-gnu/sparc/trace.c
-+++ ltrace-0.5.2/sysdeps/linux-gnu/sparc/trace.c
-@@ -33,9 +33,9 @@
- insn = ptrace(PTRACE_PEEKTEXT, proc->pid, ip, 0);
- if ((insn & 0xc1f8007f) == 0x81d00010) {
- *sysnum = ((proc_archdep *) proc->arch_ptr)->regs.r_g1;
-- if ((proc->callstack_depth > 0)
-- && proc->callstack[proc->callstack_depth -
-- 1].is_syscall) {
-+ if (proc->callstack_depth > 0 &&
-+ proc->callstack[proc->callstack_depth - 1].is_syscall &&
-+ proc->callstack[proc->callstack_depth - 1].c_un.syscall == *sysnum) {
- return 2;
- } else if (*sysnum >= 0) {
- return 1;
---- ltrace-0.5.2.orig/sysdeps/linux-gnu/mipsel/trace.c
-+++ ltrace-0.5.2/sysdeps/linux-gnu/mipsel/trace.c
-@@ -60,33 +60,34 @@
- int
- syscall_p(Process *proc, int status, int *sysnum) {
- if (WIFSTOPPED(status)
-- && WSTOPSIG(status) == (SIGTRAP | proc->tracesysgood)) {
-- /* get the user's pc (plus 8) */
-- long pc = (long)get_instruction_pointer(proc);
-- /* fetch the SWI instruction */
-- int insn = ptrace(PTRACE_PEEKTEXT, proc->pid, pc - 4, 0);
-- int num = ptrace(PTRACE_PEEKTEXT, proc->pid, pc - 8, 0);
--
--/*
-- On a mipsel, syscall looks like:
-- 24040fa1 li v0, 0x0fa1 # 4001 --> _exit syscall
-- 0000000c syscall
-- */
-- if(insn!=0x0000000c){
-- return 0;
-- }
--
-- *sysnum = (num & 0xFFFF) - 4000;
-- /* if it is a syscall, return 1 or 2 */
-- if (proc->callstack_depth > 0 &&
-- proc->callstack[proc->callstack_depth - 1].is_syscall) {
-- return 2;
-- }
--
-- if (*sysnum >= 0) {
-- return 1;
-- }
-- }
-+ && WSTOPSIG(status) == (SIGTRAP | proc->tracesysgood)) {
-+ /* get the user's pc (plus 8) */
-+ long pc = (long)get_instruction_pointer(proc);
-+ /* fetch the SWI instruction */
-+ int insn = ptrace(PTRACE_PEEKTEXT, proc->pid, pc - 4, 0);
-+ int num = ptrace(PTRACE_PEEKTEXT, proc->pid, pc - 8, 0);
-+
-+ /*
-+ On a mipsel, syscall looks like:
-+ 24040fa1 li v0, 0x0fa1 # 4001 --> _exit syscall
-+ 0000000c syscall
-+ */
-+ if(insn!=0x0000000c){
-+ return 0;
-+ }
-+
-+ *sysnum = (num & 0xFFFF) - 4000;
-+ /* if it is a syscall, return 1 or 2 */
-+ if (proc->callstack_depth > 0 &&
-+ proc->callstack[proc->callstack_depth - 1].is_syscall &&
-+ proc->callstack[proc->callstack_depth - 1].c_un.syscall == *sysnum) {
-+ return 2;
-+ }
-+
-+ if (*sysnum >= 0) {
-+ return 1;
-+ }
-+ }
- return 0;
- }
- /**
-@@ -119,34 +120,34 @@
- */
- long
- gimme_arg(enum tof type, Process *proc, int arg_num, arg_type_info *info) {
-- long ret;
-- debug(2,"type %d arg %d",type,arg_num);
-- if (type == LT_TOF_FUNCTION || type == LT_TOF_SYSCALL){
-- if(arg_num <4){
-- ret=ptrace(PTRACE_PEEKUSER,proc->pid,off_a0+arg_num,0);
-- debug(2,"ret = %#lx",ret);
-- return ret;
-- } else {
-- // If we need this, I think we can look at [sp+16] for arg_num==4.
-- CP;
-- return 0;
-- }
-- }
-- if(arg_num>=0){
-- fprintf(stderr,"args on return?");
-- }
-- if(type == LT_TOF_FUNCTIONR) {
-- return ptrace(PTRACE_PEEKUSER,proc->pid,off_v0,0);
-- }
-- if (type == LT_TOF_SYSCALLR) {
-- unsigned a3=ptrace(PTRACE_PEEKUSER, proc->pid,off_a3,0);
-- unsigned v0=ptrace(PTRACE_PEEKUSER, proc->pid,off_v0,0);
-- if(!a3){
-- return v0;
-- }
-- return -1;
-- }
-- fprintf(stderr, "gimme_arg called with wrong arguments\n");
-+ long ret;
-+ debug(2,"type %d arg %d",type,arg_num);
-+ if (type == LT_TOF_FUNCTION || type == LT_TOF_SYSCALL){
-+ if(arg_num <4){
-+ ret=ptrace(PTRACE_PEEKUSER,proc->pid,off_a0+arg_num,0);
-+ debug(2,"ret = %#lx",ret);
-+ return ret;
-+ } else {
-+ // If we need this, I think we can look at [sp+16] for arg_num==4.
-+ CP;
-+ return 0;
-+ }
-+ }
-+ if(arg_num>=0){
-+ fprintf(stderr,"args on return?");
-+ }
-+ if(type == LT_TOF_FUNCTIONR) {
-+ return ptrace(PTRACE_PEEKUSER,proc->pid,off_v0,0);
-+ }
-+ if (type == LT_TOF_SYSCALLR) {
-+ unsigned a3=ptrace(PTRACE_PEEKUSER, proc->pid,off_a3,0);
-+ unsigned v0=ptrace(PTRACE_PEEKUSER, proc->pid,off_v0,0);
-+ if(!a3){
-+ return v0;
-+ }
-+ return -1;
-+ }
-+ fprintf(stderr, "gimme_arg called with wrong arguments\n");
- return 0;
- }
-
---- ltrace-0.5.2.orig/sysdeps/linux-gnu/x86_64/trace.c
-+++ ltrace-0.5.2/sysdeps/linux-gnu/x86_64/trace.c
-@@ -41,7 +41,8 @@
- *sysnum = ptrace(PTRACE_PEEKUSER, proc->pid, 8 * ORIG_RAX, 0);
-
- if (proc->callstack_depth > 0 &&
-- proc->callstack[proc->callstack_depth - 1].is_syscall) {
-+ proc->callstack[proc->callstack_depth - 1].is_syscall &&
-+ proc->callstack[proc->callstack_depth - 1].c_un.syscall == *sysnum) {
- return 2;
- }
-