aboutsummaryrefslogtreecommitdiff
path: root/gdb/nat/gdb_ptrace.h
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2015-07-24 14:57:19 +0100
committerPedro Alves <palves@redhat.com>2015-07-24 15:11:18 +0100
commite379037592ff71dc633c6d3de0828babe805ae96 (patch)
treeb405b941cc53b84c12556fc03a471724f1007f5d /gdb/nat/gdb_ptrace.h
parenteb7aa56163cc15bb732aa3b07966103fd6940d50 (diff)
downloadbinutils-e379037592ff71dc633c6d3de0828babe805ae96.zip
binutils-e379037592ff71dc633c6d3de0828babe805ae96.tar.gz
binutils-e379037592ff71dc633c6d3de0828babe805ae96.tar.bz2
Move gdb_ptrace.h to nat/
Now that gdbserver's configure defines PTRACE_TYPE_ARGx etc., we'll be able to make gdbserver use gdb_ptrace.h too. Move it to the native target files directory. gdb/ChangeLog: 2015-07-24 Pedro Alves <palves@redhat.com> * gdb_ptrace.h: Move ... * nat/gdb_ptrace.h: ... here. * inf-ptrace.c: Adjust.
Diffstat (limited to 'gdb/nat/gdb_ptrace.h')
-rw-r--r--gdb/nat/gdb_ptrace.h149
1 files changed, 149 insertions, 0 deletions
diff --git a/gdb/nat/gdb_ptrace.h b/gdb/nat/gdb_ptrace.h
new file mode 100644
index 0000000..a969681
--- /dev/null
+++ b/gdb/nat/gdb_ptrace.h
@@ -0,0 +1,149 @@
+/* Portable <sys/ptrace.h>
+
+ Copyright (C) 2004-2015 Free Software Foundation, Inc.
+
+ This file is part of GDB.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program 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 General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#ifndef GDB_PTRACE_H
+#define GDB_PTRACE_H
+
+/* The <sys/ptrace.h> header was introduced with 4.4BSD, and provided
+ the PT_* symbolic constants for the ptrace(2) request numbers. The
+ ptrace(2) prototype was added later to the same header on BSD.
+ SunOS and GNU/Linux have slightly different symbolic names for the
+ constants that start with PTRACE_*. System V still doesn't have
+ (and probably never will have) a <sys/ptrace.h> with symbolic
+ constants; the ptrace(2) prototype can be found in <unistd.h>.
+ Fortunately all systems use the same numerical constants for the
+ common ptrace requests. */
+
+#ifdef HAVE_PTRACE_H
+# include <ptrace.h>
+#elif defined(HAVE_SYS_PTRACE_H)
+# include <sys/ptrace.h>
+#endif
+
+/* No need to include <unistd.h> since it's already included by
+ "defs.h". */
+
+#ifndef PT_TRACE_ME
+# define PT_TRACE_ME 0
+#endif
+
+#ifndef PT_READ_I
+# define PT_READ_I 1 /* Read word in child's I space. */
+#endif
+
+#ifndef PT_READ_D
+# define PT_READ_D 2 /* Read word in child's D space. */
+#endif
+
+#ifndef PT_READ_U
+# define PT_READ_U 3 /* Read word in child's U space. */
+#endif
+
+#ifndef PT_WRITE_I
+# define PT_WRITE_I 4 /* Write word in child's I space. */
+#endif
+
+#ifndef PT_WRITE_D
+# define PT_WRITE_D 5 /* Write word in child's D space. */
+#endif
+
+#ifndef PT_WRITE_U
+# define PT_WRITE_U 6 /* Write word in child's U space. */
+#endif
+
+/* HP-UX doesn't define PT_CONTINUE and PT_STEP. Instead of those two
+ ptrace requests, it has PT_CONTIN, PT_CONTIN1, PT_SINGLE and
+ PT_SINGLE1. PT_CONTIN1 and PT_SINGLE1 preserve pending signals,
+ which apparently is what is wanted by the HP-UX native code. */
+
+#ifndef PT_CONTINUE
+# ifdef PT_CONTIN1
+# define PT_CONTINUE PT_CONTIN1
+# else
+# define PT_CONTINUE 7 /* Continue the child. */
+# endif
+#endif
+
+#ifndef PT_KILL
+# define PT_KILL 8 /* Kill the child process. */
+#endif
+
+#ifndef PT_STEP
+# ifdef PT_SINGLE1
+# define PT_STEP PT_SINGLE1
+# else
+# define PT_STEP 9 /* Single step the child. */
+# endif
+#endif
+
+/* Not all systems support attaching and detaching. */
+
+#ifndef PT_ATTACH
+# ifdef PTRACE_ATTACH
+# define PT_ATTACH PTRACE_ATTACH
+# endif
+#endif
+
+#ifndef PT_DETACH
+# ifdef PTRACE_DETACH
+# define PT_DETACH PTRACE_DETACH
+# endif
+#endif
+
+/* For systems such as HP/UX that do not provide PT_SYSCALL, define it
+ here as an alias for PT_CONTINUE. This is what the PT_SYSCALL
+ request is expected to do, in addition to stopping when entering/
+ exiting a system call. Chances are, if the system supports system
+ call tracing, enabling this feature is probably done separately;
+ and there is probably no special request that we would be required
+ to use when resuming the execution of our program. */
+#ifndef PT_SYSCALL
+# ifdef PTRACE_SYSCALL
+# define PT_SYSCALL PTRACE_SYSCALL
+#else
+# define PT_SYSCALL PT_CONTINUE
+# endif
+#endif
+
+/* Some systems, in particular DEC OSF/1, Digital Unix, Compaq Tru64
+ or whatever it's called these days, don't provide a prototype for
+ ptrace. Provide one to silence compiler warnings. */
+
+#ifndef HAVE_DECL_PTRACE
+extern PTRACE_TYPE_RET ptrace();
+#endif
+
+/* Some systems, at least AIX and HP-UX have a ptrace with five
+ arguments. Since we never use the fifth argument, define a ptrace
+ macro that calls the real ptrace with the last argument set to
+ zero. */
+
+#ifdef PTRACE_TYPE_ARG5
+# ifdef HAVE_PTRACE64
+# define ptrace(request, pid, addr, data) \
+ ptrace64 (request, pid, addr, data, 0)
+# undef PTRACE_TYPE_ARG3
+# define PTRACE_TYPE_ARG3 long long
+# else
+# define ptrace(request, pid, addr, data) \
+ ptrace (request, pid, addr, data, 0)
+# endif
+#endif
+
+#endif /* gdb_ptrace.h */