2014-01-01 04:54:24 +01:00
|
|
|
/* Copyright (C) 2011-2014 Free Software Foundation, Inc.
|
2011-04-26 17:36:04 +02:00
|
|
|
|
|
|
|
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 COMMON_LINUX_PTRACE_H
|
|
|
|
#define COMMON_LINUX_PTRACE_H
|
|
|
|
|
2012-03-13 16:02:25 +01:00
|
|
|
struct buffer;
|
|
|
|
|
2011-04-26 17:36:04 +02:00
|
|
|
#include <sys/ptrace.h>
|
|
|
|
|
2013-08-23 01:46:30 +02:00
|
|
|
#ifdef __UCLIBC__
|
|
|
|
#if !(defined(__UCLIBC_HAS_MMU__) || defined(__ARCH_HAS_MMU__))
|
|
|
|
/* PTRACE_TEXT_ADDR and friends. */
|
|
|
|
#include <asm/ptrace.h>
|
|
|
|
#define HAS_NOMMU
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if !defined(PTRACE_TYPE_ARG3)
|
|
|
|
#define PTRACE_TYPE_ARG3 void *
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if !defined(PTRACE_TYPE_ARG4)
|
|
|
|
#define PTRACE_TYPE_ARG4 void *
|
|
|
|
#endif
|
|
|
|
|
2011-04-26 17:36:04 +02:00
|
|
|
#ifndef PTRACE_GETSIGINFO
|
|
|
|
# define PTRACE_GETSIGINFO 0x4202
|
|
|
|
# define PTRACE_SETSIGINFO 0x4203
|
|
|
|
#endif /* PTRACE_GETSIGINF */
|
|
|
|
|
|
|
|
/* If the system headers did not provide the constants, hard-code the normal
|
|
|
|
values. */
|
|
|
|
#ifndef PTRACE_EVENT_FORK
|
|
|
|
|
|
|
|
#define PTRACE_SETOPTIONS 0x4200
|
|
|
|
#define PTRACE_GETEVENTMSG 0x4201
|
|
|
|
|
|
|
|
/* options set using PTRACE_SETOPTIONS */
|
|
|
|
#define PTRACE_O_TRACESYSGOOD 0x00000001
|
|
|
|
#define PTRACE_O_TRACEFORK 0x00000002
|
|
|
|
#define PTRACE_O_TRACEVFORK 0x00000004
|
|
|
|
#define PTRACE_O_TRACECLONE 0x00000008
|
|
|
|
#define PTRACE_O_TRACEEXEC 0x00000010
|
|
|
|
#define PTRACE_O_TRACEVFORKDONE 0x00000020
|
|
|
|
#define PTRACE_O_TRACEEXIT 0x00000040
|
|
|
|
|
|
|
|
/* Wait extended result codes for the above trace options. */
|
|
|
|
#define PTRACE_EVENT_FORK 1
|
|
|
|
#define PTRACE_EVENT_VFORK 2
|
|
|
|
#define PTRACE_EVENT_CLONE 3
|
|
|
|
#define PTRACE_EVENT_EXEC 4
|
|
|
|
#define PTRACE_EVENT_VFORK_DONE 5
|
|
|
|
#define PTRACE_EVENT_EXIT 6
|
|
|
|
|
|
|
|
#endif /* PTRACE_EVENT_FORK */
|
|
|
|
|
2011-09-30 02:01:59 +02:00
|
|
|
#if (defined __bfin__ || defined __frv__ || defined __sh__) \
|
|
|
|
&& !defined PTRACE_GETFDPIC
|
|
|
|
#define PTRACE_GETFDPIC 31
|
|
|
|
#define PTRACE_GETFDPIC_EXEC 0
|
|
|
|
#define PTRACE_GETFDPIC_INTERP 1
|
|
|
|
#endif
|
|
|
|
|
2011-04-26 17:36:04 +02:00
|
|
|
/* We can't always assume that this flag is available, but all systems
|
|
|
|
with the ptrace event handlers also have __WALL, so it's safe to use
|
|
|
|
in some contexts. */
|
|
|
|
#ifndef __WALL
|
|
|
|
#define __WALL 0x40000000 /* Wait for any child. */
|
|
|
|
#endif
|
|
|
|
|
2012-03-13 16:02:25 +01:00
|
|
|
extern void linux_ptrace_attach_warnings (pid_t pid, struct buffer *buffer);
|
2012-07-07 14:13:57 +02:00
|
|
|
extern void linux_ptrace_init_warnings (void);
|
2013-08-23 01:46:30 +02:00
|
|
|
extern void linux_enable_event_reporting (pid_t pid);
|
|
|
|
extern int linux_supports_tracefork (void);
|
|
|
|
extern int linux_supports_traceclone (void);
|
|
|
|
extern int linux_supports_tracevforkdone (void);
|
|
|
|
extern int linux_supports_tracesysgood (void);
|
2012-03-13 16:02:25 +01:00
|
|
|
|
2011-04-26 17:36:04 +02:00
|
|
|
#endif /* COMMON_LINUX_PTRACE_H */
|