| /* `ptrace' debugger support interface. Generic version; constants are common. |
| Copyright (C) 1991, 1992, 1996, 1998 Free Software Foundation, Inc. |
| This file is part of the GNU C Library. |
| |
| The GNU C Library is free software; you can redistribute it and/or |
| modify it under the terms of the GNU Lesser General Public |
| License as published by the Free Software Foundation; either |
| version 2.1 of the License, or (at your option) any later version. |
| |
| The GNU C Library is distributed in the hope that it will be useful, |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| Lesser General Public License for more details. |
| |
| You should have received a copy of the GNU Lesser General Public |
| License along with the GNU C Library; if not, write to the Free |
| Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA |
| 02111-1307 USA. */ |
| |
| #ifndef _PTRACE_H |
| |
| #define _PTRACE_H 1 |
| #include <features.h> |
| |
| __BEGIN_DECLS |
| |
| |
| /* Type of the REQUEST argument to `ptrace.' */ |
| enum __ptrace_request |
| { |
| /* Indicate that the process making this request should be traced. |
| All signals received by this process can be intercepted by its |
| parent, and its parent can use the other `ptrace' requests. */ |
| PTRACE_TRACEME = 0, |
| #define PT_TRACE_ME PTRACE_TRACEME |
| |
| /* Return the word in the process's text space at address ADDR. */ |
| PTRACE_PEEKTEXT, |
| #define PT_READ_I PTRACE_PEEKTEXT |
| |
| /* Return the word in the process's data space at address ADDR. */ |
| PTRACE_PEEKDATA, |
| #define PT_READ_D PTRACE_PEEKDATA |
| |
| /* Return the word in the process's user area at offset ADDR. */ |
| PTRACE_PEEKUSER, |
| #define PT_READ_U PTRACE_PEEKUSER |
| |
| /* Write the word DATA into the process's text space at address ADDR. */ |
| PTRACE_POKETEXT, |
| #define PT_WRITE_I PTRACE_POKETEXT |
| |
| /* Write the word DATA into the process's data space at address ADDR. */ |
| PTRACE_POKEDATA, |
| #define PT_WRITE_D PTRACE_POKEDATA |
| |
| /* Write the word DATA into the process's user space at offset ADDR. */ |
| PTRACE_POKEUSER, |
| #define PT_WRITE_U PTRACE_POKEUSER |
| |
| /* Continue the process. */ |
| PTRACE_CONT, |
| #define PT_CONTINUE PTRACE_CONT |
| |
| /* Kill the process. */ |
| PTRACE_KILL, |
| #define PT_KILL PTRACE_KILL |
| |
| /* Single step the process. |
| This is not supported on all machines. */ |
| PTRACE_SINGLESTEP, |
| #define PT_STEP PTRACE_SINGLESTEP |
| |
| /* Attach to a process that is already running. */ |
| PTRACE_ATTACH, |
| #define PT_ATTACH PTRACE_ATTACH |
| |
| /* Detach from a process attached to with PTRACE_ATTACH. */ |
| PTRACE_DETACH, |
| #define PT_DETACH PTRACE_DETACH |
| |
| /* Get the process's registers (not including floating-point registers) |
| and put them in the `struct regs' (see <machine/regs.h>) at ADDR. */ |
| PTRACE_GETREGS = 12, |
| |
| /* Set the process's registers (not including floating-point registers) |
| to the contents of the `struct regs' (see <machine/regs.h>) at ADDR. */ |
| PTRACE_SETREGS, |
| |
| /* Get the process's floating point registers and put them |
| in the `struct fp_status' (see <machine/regs.h>) at ADDR. */ |
| PTRACE_GETFPREGS = 14, |
| |
| /* Set the process's floating point registers to the contents |
| of the `struct fp_status' (see <machine/regs.h>) at ADDR. */ |
| PTRACE_SETFPREGS, |
| |
| /* Read DATA bytes from the process's data space at address ADDR. |
| Put the result starting at address ADDR2 in the caller's |
| address space. */ |
| PTRACE_READDATA = 16, |
| |
| /* Write DATA bytes from ADDR2 in the caller's address space into |
| the process's data space at address ADDR. */ |
| PTRACE_WRITEDATA, |
| |
| /* Read DATA bytes from the process's text space at address ADDR. |
| Put the result starting at address ADDR2 in the caller's |
| address space. */ |
| PTRACE_READTEXT = 18, |
| |
| /* Write DATA bytes from ADDR2 in the caller's address space into |
| the process's text space at address ADDR. */ |
| PTRACE_WRITETEXT, |
| |
| /* Read the floating-point accelerator unit registers and |
| put them into the `struct fpa_regs' (see <machine/regs.h>) at ADDR. */ |
| PTRACE_GETFPAREGS = 20, |
| |
| /* Write the floating-point accelerator unit registers from |
| the contents of the `struct fpa_regs' at ADDR. */ |
| PTRACE_SETFPAREGS |
| }; |
| |
| /* Perform process tracing functions. REQUEST is one of the values |
| above, and determines the action to be taken. |
| For all requests except PTRACE_TRACEME, PID specifies the process to be |
| traced. |
| |
| PID and the other arguments described above for the various requests should |
| appear (those that are used for the particular request) as: |
| pid_t PID, void *ADDR, int DATA, void *ADDR2 |
| after REQUEST. */ |
| extern int ptrace (enum __ptrace_request __request, ...); |
| |
| __END_DECLS |
| |
| #endif /* ptrace.h */ |