regs.c revision 3df476b28e4a9cdb43cf29fff8e89481310eb30d
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 "main.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, 64 /* REG_PC */ , 0); 22} 23 24void 25set_instruction_pointer(Process *proc, void *addr) { 26 ptrace(PTRACE_POKEUSER, proc->pid, 64 /* REG_PC */ , addr); 27} 28 29void * 30get_stack_pointer(Process *proc) { 31 return (void *)ptrace(PTRACE_PEEKUSER, proc->pid, 30 /* REG_FP */ , 0); 32} 33 34void * 35get_return_addr(Process *proc, void *stack_pointer) { 36 return (void *)ptrace(PTRACE_PEEKUSER, proc->pid, 26 /* RA */ , 0); 37} 38