diff options
author | Ian Wienand <ianw@ieee.org> | 2006-02-20 22:44:45 +0100 |
---|---|---|
committer | Ian Wienand <ianw@debian.org> | 2006-02-20 22:44:45 +0100 |
commit | 9a2ad351a1c3215dc596ff3e2e3fd4bc24445a6b (patch) | |
tree | 01bd7628615527758c5a4d0f4242b8cc87508082 /sysdeps/linux-gnu/m68k | |
parent | 5570a7769869a4df25ef85f302f74a7feb6c0cd3 (diff) | |
download | ltrace-9a2ad351a1c3215dc596ff3e2e3fd4bc24445a6b.tar.gz |
Switched to SVN (initial import)
Diffstat (limited to 'sysdeps/linux-gnu/m68k')
-rw-r--r-- | sysdeps/linux-gnu/m68k/arch.h | 3 | ||||
-rw-r--r-- | sysdeps/linux-gnu/m68k/plt.c | 12 | ||||
-rw-r--r-- | sysdeps/linux-gnu/m68k/regs.c | 22 | ||||
-rw-r--r-- | sysdeps/linux-gnu/m68k/trace.c | 69 |
4 files changed, 53 insertions, 53 deletions
diff --git a/sysdeps/linux-gnu/m68k/arch.h b/sysdeps/linux-gnu/m68k/arch.h index 1790d09..438545f 100644 --- a/sysdeps/linux-gnu/m68k/arch.h +++ b/sysdeps/linux-gnu/m68k/arch.h @@ -4,3 +4,6 @@ #define LT_ELFCLASS ELFCLASS32 #define LT_ELF_MACHINE EM_68K + +#define PLTs_INIT_BY_HERE NULL +#define E_ENTRY_NAME "_start" diff --git a/sysdeps/linux-gnu/m68k/plt.c b/sysdeps/linux-gnu/m68k/plt.c index 09168e9..54cc920 100644 --- a/sysdeps/linux-gnu/m68k/plt.c +++ b/sysdeps/linux-gnu/m68k/plt.c @@ -2,8 +2,14 @@ #include "ltrace.h" #include "elf.h" -GElf_Addr arch_plt_sym_val(struct ltelf *lte, size_t ndx, GElf_Rela * rela) +GElf_Addr +arch_plt_sym_val (struct ltelf *lte, size_t ndx, GElf_Rela *rela) { - return lte->plt_addr + (ndx + 1) - * ((lte->ehdr.e_flags & EF_CPU32) ? 24 : 12); + return lte->plt_addr + (ndx + 1) + * ((lte->ehdr.e_flags & EF_CPU32) ? 24 : 12); +} + +void * plt2addr(struct process *proc, void ** plt) +{ + return (void *) plt; } diff --git a/sysdeps/linux-gnu/m68k/regs.c b/sysdeps/linux-gnu/m68k/regs.c index d953d28..187cef5 100644 --- a/sysdeps/linux-gnu/m68k/regs.c +++ b/sysdeps/linux-gnu/m68k/regs.c @@ -16,22 +16,22 @@ # define PTRACE_POKEUSER PTRACE_POKEUSR #endif -void *get_instruction_pointer(struct process *proc) -{ - return (void *)ptrace(PTRACE_PEEKUSER, proc->pid, 4 * PT_PC, 0); +void * +get_instruction_pointer(struct process * proc) { + return (void *)ptrace(PTRACE_PEEKUSER, proc->pid, 4*PT_PC, 0); } -void set_instruction_pointer(struct process *proc, void *addr) -{ - ptrace(PTRACE_POKEUSER, proc->pid, 4 * PT_PC, addr); +void +set_instruction_pointer(struct process * proc, void * addr) { + ptrace(PTRACE_POKEUSER, proc->pid, 4*PT_PC, addr); } -void *get_stack_pointer(struct process *proc) -{ - return (void *)ptrace(PTRACE_PEEKUSER, proc->pid, 4 * PT_USP, 0); +void * +get_stack_pointer(struct process * proc) { + return (void *)ptrace(PTRACE_PEEKUSER, proc->pid, 4*PT_USP, 0); } -void *get_return_addr(struct process *proc, void *stack_pointer) -{ +void * +get_return_addr(struct process * proc, void * stack_pointer) { return (void *)ptrace(PTRACE_PEEKTEXT, proc->pid, stack_pointer, 0); } diff --git a/sysdeps/linux-gnu/m68k/trace.c b/sysdeps/linux-gnu/m68k/trace.c index b4e1b88..fac5fbe 100644 --- a/sysdeps/linux-gnu/m68k/trace.c +++ b/sysdeps/linux-gnu/m68k/trace.c @@ -18,26 +18,24 @@ # define PTRACE_POKEUSER PTRACE_POKEUSR #endif -void get_arch_dep(struct process *proc) -{ +void +get_arch_dep(struct process * proc) { } /* Returns 1 if syscall, 2 if sysret, 0 otherwise. */ -int syscall_p(struct process *proc, int status, int *sysnum) -{ +int +syscall_p(struct process * proc, int status, int * sysnum) { int depth; - if (WIFSTOPPED(status) && WSTOPSIG(status) == SIGTRAP) { - *sysnum = ptrace(PTRACE_PEEKUSER, proc->pid, 4 * PT_ORIG_D0, 0); - if (*sysnum == -1) - return 0; - if (*sysnum >= 0) { + if (WIFSTOPPED(status) && WSTOPSIG(status)==(SIGTRAP | proc->tracesysgood)) { + *sysnum = ptrace(PTRACE_PEEKUSER, proc->pid, 4*PT_ORIG_D0, 0); + if (*sysnum == -1) return 0; + if (*sysnum>=0) { depth = proc->callstack_depth; - if (depth > 0 && - proc->callstack[depth - 1].is_syscall && - proc->callstack[depth - 1].c_un.syscall == - *sysnum) { + if (depth>0 && + proc->callstack[depth-1].is_syscall && + proc->callstack[depth-1].c_un.syscall==*sysnum) { return 2; } else { return 1; @@ -47,36 +45,29 @@ int syscall_p(struct process *proc, int status, int *sysnum) return 0; } -long gimme_arg(enum tof type, struct process *proc, int arg_num) -{ - if (arg_num == -1) { /* return value */ - return ptrace(PTRACE_PEEKUSER, proc->pid, 4 * PT_D0, 0); +long +gimme_arg(enum tof type, struct process * proc, int arg_num) { + if (arg_num==-1) { /* return value */ + return ptrace(PTRACE_PEEKUSER, proc->pid, 4*PT_D0, 0); } - if (type == LT_TOF_FUNCTION || type == LT_TOF_FUNCTIONR) { - return ptrace(PTRACE_PEEKTEXT, proc->pid, - proc->stack_pointer + 4 * (arg_num + 1), 0); - } else if (type == LT_TOF_SYSCALL || type == LT_TOF_SYSCALLR) { + if (type==LT_TOF_FUNCTION || type==LT_TOF_FUNCTIONR) { + return ptrace(PTRACE_PEEKTEXT, proc->pid, proc->stack_pointer+4*(arg_num+1), 0); + } else if (type==LT_TOF_SYSCALL || type==LT_TOF_SYSCALLR) { #if 0 - switch (arg_num) { - case 0: - return ptrace(PTRACE_PEEKUSER, proc->pid, 4 * PT_D1, 0); - case 1: - return ptrace(PTRACE_PEEKUSER, proc->pid, 4 * PT_D2, 0); - case 2: - return ptrace(PTRACE_PEEKUSER, proc->pid, 4 * PT_D3, 0); - case 3: - return ptrace(PTRACE_PEEKUSER, proc->pid, 4 * PT_D4, 0); - case 4: - return ptrace(PTRACE_PEEKUSER, proc->pid, 4 * PT_D5, 0); - default: - fprintf(stderr, - "gimme_arg called with wrong arguments\n"); - exit(2); + switch(arg_num) { + case 0: return ptrace(PTRACE_PEEKUSER, proc->pid, 4*PT_D1, 0); + case 1: return ptrace(PTRACE_PEEKUSER, proc->pid, 4*PT_D2, 0); + case 2: return ptrace(PTRACE_PEEKUSER, proc->pid, 4*PT_D3, 0); + case 3: return ptrace(PTRACE_PEEKUSER, proc->pid, 4*PT_D4, 0); + case 4: return ptrace(PTRACE_PEEKUSER, proc->pid, 4*PT_D5, 0); + default: + fprintf(stderr, "gimme_arg called with wrong arguments\n"); + exit(2); } #else /* That hack works on m68k, too */ - return ptrace(PTRACE_PEEKUSER, proc->pid, 4 * arg_num, 0); + return ptrace(PTRACE_PEEKUSER, proc->pid, 4*arg_num, 0); #endif } else { fprintf(stderr, "gimme_arg called with wrong arguments\n"); @@ -86,6 +77,6 @@ long gimme_arg(enum tof type, struct process *proc, int arg_num) return 0; } -void save_register_args(enum tof type, struct process *proc) -{ +void +save_register_args(enum tof type, struct process * proc) { } |