regs.c revision 5bfb061c4c7cfac6e1882a586cf36c849d95fcea
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#if (!defined(PTRACE_PEEKUSER) && defined(PTRACE_PEEKUSR)) 10# define PTRACE_PEEKUSER PTRACE_PEEKUSR 11#endif 12 13#if (!defined(PTRACE_POKEUSER) && defined(PTRACE_POKEUSR)) 14# define PTRACE_POKEUSER PTRACE_POKEUSR 15#endif 16 17void * 18get_instruction_pointer(pid_t pid) { 19 return (void *)ptrace(PTRACE_PEEKUSER, pid, 4*PT_NIP, 0); 20} 21 22void 23set_instruction_pointer(pid_t pid, long addr) { 24 ptrace(PTRACE_POKEUSER, pid, 4*PT_NIP, addr); 25} 26 27void * 28get_stack_pointer(pid_t pid) { 29 return (void *)ptrace(PTRACE_PEEKUSER, pid, 4*PT_R1, 0); 30} 31 32void * 33get_return_addr(pid_t pid, void * stack_pointer) { 34 return (void *)ptrace(PTRACE_PEEKUSER, pid, 4*PT_LNK, 0); 35} 36