aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/linux-gnu/m68k
diff options
context:
space:
mode:
authorIan Wienand <ianw@ieee.org>2006-02-20 22:44:45 +0100
committerIan Wienand <ianw@debian.org>2006-02-20 22:44:45 +0100
commit9a2ad351a1c3215dc596ff3e2e3fd4bc24445a6b (patch)
tree01bd7628615527758c5a4d0f4242b8cc87508082 /sysdeps/linux-gnu/m68k
parent5570a7769869a4df25ef85f302f74a7feb6c0cd3 (diff)
downloadltrace-9a2ad351a1c3215dc596ff3e2e3fd4bc24445a6b.tar.gz
Switched to SVN (initial import)
Diffstat (limited to 'sysdeps/linux-gnu/m68k')
-rw-r--r--sysdeps/linux-gnu/m68k/arch.h3
-rw-r--r--sysdeps/linux-gnu/m68k/plt.c12
-rw-r--r--sysdeps/linux-gnu/m68k/regs.c22
-rw-r--r--sysdeps/linux-gnu/m68k/trace.c69
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) {
}