1 /* Portable <sys/ptrace.h> 2 3 Copyright 2004 Free Software Foundation, Inc. 4 5 This file is part of GDB. 6 7 This program is free software; you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation; either version 2 of the License, or 10 (at your option) any later version. 11 12 This program is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with this program; if not, write to the Free Software 19 Foundation, Inc., 59 Temple Place - Suite 330, 20 Boston, MA 02111-1307, USA. */ 21 22 #ifndef GDB_PTRACE_H 23 #define GDB_PTRACE_H 24 25 /* The <sys/ptrace.h> header was introduced with 4.4BSD, and provided 26 the PT_* symbolic constants for the ptrace(2) request numbers. The 27 ptrace(2) prototype was added later to the same header on BSD. 28 SunOS and GNU/Linux have slightly different symbolic names for the 29 constants that start with PTRACE_*. System V still doesn't have 30 (and probably never will have) a <sys/ptrace.h> with symbolic 31 constants; the ptrace(2) prototype can be found in <unistd.h>. 32 Fortunately all systems use the same numerical constants for the 33 common ptrace requests. */ 34 35 #ifdef HAVE_PTRACE_H 36 # include <ptrace.h> 37 #elif defined(HAVE_SYS_PTRACE_H) 38 # include <sys/ptrace.h> 39 #endif 40 41 /* No need to include <unistd.h> since it's already included by 42 "defs.h". */ 43 44 #ifndef PT_READ_I 45 # define PT_READ_I 1 /* Read word in child's I space. */ 46 #endif 47 48 #ifndef PT_READ_D 49 # define PT_READ_D 2 /* Read word in child's D space. */ 50 #endif 51 52 #ifndef PT_READ_U 53 # define PT_READ_U 3 /* Read word in child's U space. */ 54 #endif 55 56 #ifndef PT_WRITE_I 57 # define PT_WRITE_I 4 /* Write word in child's I space. */ 58 #endif 59 60 #ifndef PT_WRITE_D 61 # define PT_WRITE_D 5 /* Write word in child's D space. */ 62 #endif 63 64 #ifndef PT_WRITE_U 65 # define PT_WRITE_U 6 /* Write word in child's U space. */ 66 #endif 67 68 /* HP-UX doesn't define PT_CONTINUE and PT_STEP. Instead of those two 69 ptrace requests, it has PT_CONTIN, PT_CONTIN1, PT_SINGLE and 70 PT_SINGLE1. PT_CONTIN1 and PT_SINGLE1 preserve pending signals, 71 which apparently is what is wanted by the HP-UX native code. */ 72 73 #ifndef PT_CONTINUE 74 # ifdef PT_CONTIN1 75 # define PT_CONTINUE PT_CONTIN1 76 # else 77 # define PT_CONTINUE 7 /* Continue the child. */ 78 # endif 79 #endif 80 81 #ifndef PT_KILL 82 # define PT_KILL 8 /* Kill the child process. */ 83 #endif 84 85 #ifndef PT_STEP 86 # ifdef PT_SINGLE1 87 # define PT_STEP PT_SINGLE1 88 # else 89 # define PT_STEP 9 /* Single step the child. */ 90 # endif 91 #endif 92 93 /* Not all systems support attaching and detaching. */ 94 95 #ifndef PT_ATTCH 96 # ifdef PTRACE_DETACH 97 # define PT_ATTACH PTRACE_ATTACH 98 # endif 99 #endif 100 101 #ifndef PT_DETACH 102 # ifdef PTRACE_DETACH 103 # define PT_DETACH PTRACE_DETACH 104 # endif 105 #endif 106 107 /* Some systems, in particular DEC OSF/1, Digital Unix, Compaq Tru64 108 or whatever it's called these days, don't provide a prototype for 109 ptrace. Provide one to silence compiler warnings. */ 110 #ifndef HAVE_DECL_PTRACE 111 extern PTRACE_TYPE_RET ptrace(); 112 #endif 113 114 #endif /* gdb_ptrace.h */ 115