* gdb_ptrace.h: New file.
* infptrace.c: Include "gdb_ptrace.h" instead of <ptrace.h> or <sys/ptrace.h>. (PT_READ_I, PT_READ_D, PT_READ_U, PT_WRITE_I, PT_WRITE_D) (PT_WRITE_U, PT_CONTINUE, PT_STEP, PT_KILL): Remove defines. (attach): Don't define PT_ATTACH. (detach): Don't define PT_DETACH. * Makefile.in (gdb_ptrace_h): New variable. (infptrace.o): Update dependencies.
This commit is contained in:
parent
ea5158d820
commit
11003ae340
4 changed files with 131 additions and 48 deletions
|
@ -1,3 +1,15 @@
|
|||
2004-08-21 Mark Kettenis <kettenis@gnu.org>
|
||||
|
||||
* gdb_ptrace.h: New file.
|
||||
* infptrace.c: Include "gdb_ptrace.h" instead of <ptrace.h> or
|
||||
<sys/ptrace.h>.
|
||||
(PT_READ_I, PT_READ_D, PT_READ_U, PT_WRITE_I, PT_WRITE_D)
|
||||
(PT_WRITE_U, PT_CONTINUE, PT_STEP, PT_KILL): Remove defines.
|
||||
(attach): Don't define PT_ATTACH.
|
||||
(detach): Don't define PT_DETACH.
|
||||
* Makefile.in (gdb_ptrace_h): New variable.
|
||||
(infptrace.o): Update dependencies.
|
||||
|
||||
2004-08-16 Mark Kettenis <kettenis@gnu.org>
|
||||
|
||||
* inferior.h (PTRACE_ARG3_TYPE): Define as PTRACE_TYPE_ARG3
|
||||
|
|
|
@ -684,6 +684,7 @@ gdb_h = gdb.h
|
|||
gdb_locale_h = gdb_locale.h
|
||||
gdb_obstack_h = gdb_obstack.h $(obstack_h)
|
||||
gdb_proc_service_h = gdb_proc_service.h $(gregset_h)
|
||||
gdb_ptrace_h = gdb_ptrace.h
|
||||
gdb_regex_h = gdb_regex.h $(xregex_h)
|
||||
gdb_stabs_h = gdb-stabs.h
|
||||
gdb_stat_h = gdb_stat.h
|
||||
|
@ -2050,7 +2051,7 @@ inflow.o: inflow.c $(defs_h) $(frame_h) $(inferior_h) $(command_h) \
|
|||
$(inflow_h)
|
||||
infptrace.o: infptrace.c $(defs_h) $(frame_h) $(inferior_h) $(target_h) \
|
||||
$(gdb_string_h) $(regcache_h) $(gdb_wait_h) $(command_h) \
|
||||
$(gdb_dirent_h) $(gdbcore_h) $(gdb_stat_h)
|
||||
$(gdb_dirent_h) $(gdb_ptrace_h) $(gdbcore_h) $(gdb_stat_h)
|
||||
infrun.o: infrun.c $(defs_h) $(gdb_string_h) $(symtab_h) $(frame_h) \
|
||||
$(inferior_h) $(breakpoint_h) $(gdb_wait_h) $(gdbcore_h) $(gdbcmd_h) \
|
||||
$(cli_script_h) $(target_h) $(gdbthread_h) $(annotate_h) \
|
||||
|
|
114
gdb/gdb_ptrace.h
Normal file
114
gdb/gdb_ptrace.h
Normal file
|
@ -0,0 +1,114 @@
|
|||
/* Portable <sys/ptrace.h>
|
||||
|
||||
Copyright 2004 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 2 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, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#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 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_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_ATTCH
|
||||
# ifdef PTRACE_DETACH
|
||||
# define PT_ATTACH PTRACE_ATTACH
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef PT_DETACH
|
||||
# ifdef PTRACE_DETACH
|
||||
# define PT_DETACH PTRACE_DETACH
|
||||
# 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
|
||||
|
||||
#endif /* gdb_ptrace.h */
|
|
@ -40,41 +40,7 @@
|
|||
#include <signal.h>
|
||||
#include <sys/ioctl.h>
|
||||
|
||||
#ifdef HAVE_PTRACE_H
|
||||
#include <ptrace.h>
|
||||
#else
|
||||
#ifdef HAVE_SYS_PTRACE_H
|
||||
#include <sys/ptrace.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if !defined (PT_READ_I)
|
||||
#define PT_READ_I 1 /* Read word from text space */
|
||||
#endif
|
||||
#if !defined (PT_READ_D)
|
||||
#define PT_READ_D 2 /* Read word from data space */
|
||||
#endif
|
||||
#if !defined (PT_READ_U)
|
||||
#define PT_READ_U 3 /* Read word from kernel user struct */
|
||||
#endif
|
||||
#if !defined (PT_WRITE_I)
|
||||
#define PT_WRITE_I 4 /* Write word to text space */
|
||||
#endif
|
||||
#if !defined (PT_WRITE_D)
|
||||
#define PT_WRITE_D 5 /* Write word to data space */
|
||||
#endif
|
||||
#if !defined (PT_WRITE_U)
|
||||
#define PT_WRITE_U 6 /* Write word to kernel user struct */
|
||||
#endif
|
||||
#if !defined (PT_CONTINUE)
|
||||
#define PT_CONTINUE 7 /* Continue after signal */
|
||||
#endif
|
||||
#if !defined (PT_STEP)
|
||||
#define PT_STEP 9 /* Set flag for single stepping */
|
||||
#endif
|
||||
#if !defined (PT_KILL)
|
||||
#define PT_KILL 8 /* Send child a SIGKILL signal */
|
||||
#endif
|
||||
#include "gdb_ptrace.h"
|
||||
|
||||
#include "gdbcore.h"
|
||||
#ifdef HAVE_SYS_FILE_H
|
||||
|
@ -272,13 +238,8 @@ child_resume (ptid_t ptid, int step, enum target_signal signal)
|
|||
int
|
||||
attach (int pid)
|
||||
{
|
||||
errno = 0;
|
||||
#ifndef PT_ATTACH
|
||||
#ifdef PTRACE_ATTACH
|
||||
#define PT_ATTACH PTRACE_ATTACH
|
||||
#endif
|
||||
#endif
|
||||
#ifdef PT_ATTACH
|
||||
errno = 0;
|
||||
ptrace (PT_ATTACH, pid, (PTRACE_TYPE_ARG3) 0, 0);
|
||||
if (errno)
|
||||
perror_with_name ("ptrace");
|
||||
|
@ -296,13 +257,8 @@ attach (int pid)
|
|||
void
|
||||
detach (int signal)
|
||||
{
|
||||
errno = 0;
|
||||
#ifndef PT_DETACH
|
||||
#ifdef PTRACE_DETACH
|
||||
#define PT_DETACH PTRACE_DETACH
|
||||
#endif
|
||||
#endif
|
||||
#ifdef PT_DETACH
|
||||
errno = 0;
|
||||
ptrace (PT_DETACH, PIDGET (inferior_ptid), (PTRACE_TYPE_ARG3) 1,
|
||||
signal);
|
||||
if (errno)
|
||||
|
|
Loading…
Reference in a new issue