regs.c revision 8f8282f72eaeadc5419cd5470100e8dcaba5b7fd
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_PC, 0); 20} 21 22void 23set_instruction_pointer(pid_t pid, long addr) { 24 ptrace(PTRACE_POKEUSER, pid, 4*PT_PC, addr); 25} 26 27void * 28get_stack_pointer(pid_t pid) { 29 return (void *)ptrace(PTRACE_PEEKUSER, pid, 4*PT_USP, 0); 30} 31 32void * 33get_return_addr(pid_t pid, void * stack_pointer) { 34 return (void *)ptrace(PTRACE_PEEKTEXT, pid, stack_pointer, 0); 35} 36