regs.c revision a8909f71e1421949c960f287217be6c42c286c0f
1#if HAVE_CONFIG_H 2#include "config.h" 3#endif 4 5#include <sys/types.h> 6#include <sys/ptrace.h> 7#include <asm/ptrace.h> 8 9#include "ltrace.h" 10 11#if (!defined(PTRACE_PEEKUSER) && defined(PTRACE_PEEKUSR)) 12# define PTRACE_PEEKUSER PTRACE_PEEKUSR 13#endif 14 15#if (!defined(PTRACE_POKEUSER) && defined(PTRACE_POKEUSR)) 16# define PTRACE_POKEUSER PTRACE_POKEUSR 17#endif 18 19void * 20get_instruction_pointer(Process *proc) { 21 return (void *)ptrace(PTRACE_PEEKUSER, proc->pid, 4 * PT_PC, 0); 22} 23 24void 25set_instruction_pointer(Process *proc, void *addr) { 26 ptrace(PTRACE_POKEUSER, proc->pid, 4 * PT_PC, addr); 27} 28 29void * 30get_stack_pointer(Process *proc) { 31 return (void *)ptrace(PTRACE_PEEKUSER, proc->pid, 4 * PT_USP, 0); 32} 33 34void * 35get_return_addr(Process *proc, void *stack_pointer) { 36 return (void *)ptrace(PTRACE_PEEKTEXT, proc->pid, stack_pointer, 0); 37} 38