From patchwork Wed Dec 20 22:34:12 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Martin Balao X-Patchwork-Id: 25060 Received: (qmail 125590 invoked by alias); 20 Dec 2017 22:34:23 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 125579 invoked by uid 89); 20 Dec 2017 22:34:22 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_SHORT, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.2 spammy= X-HELO: mail-qt0-f195.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:date:mime-version :content-transfer-encoding; bh=qBxNDuhbYpW693AvGevo6qkNpP0RW3YFYdFi7F9CFBU=; b=NhtUCpKwS4OrUE93jlKnzNTQRECTJJLaNIgpnfx4yk9+NXPGN0DIkPPelwx+sSzhsv ORyMoXQld5lGf8I+YJk8bRaOfj0U5K6tAOWB1+huX4YDOb954Jhp2/8/SYzMT/+4cv+f jBATfuTRvS3lydcDAnYtgWhh6J11ebVgcMrLOrdoMKm88WNbRGsZQl7Gy8mZ8Pj/duKP XB+O4JvFcM5UhSPBpKpAY3Va0x1b5a59+YXPadeAL51FlnQD9UU1Gfn6l3qr1mCDZc4L pteaF7mvE82AGAB+HkfJOWYMoYJCNHdlxrGUII3Pu2MeBGGa8mylM3X9Z3OJ8tVa+BZ1 c4Ow== X-Gm-Message-State: AKGB3mKBTOQSmUtBfa6eXfzuUd/1tmNsGtMJmqkESb95tuM6j7M7G+lc 7jSwk5MiMa2zSKl+8/aj8h59ONon1xI= X-Google-Smtp-Source: ACJfBouoQYZpHUsDccCBl1ji5GVC43CZ9L7WVFRxjNhAKM4XNwOIh7fPhMAie2M54Gst1Y5JA1Wd+g== X-Received: by 10.237.53.2 with SMTP id a2mr11927838qte.5.1513809257113; Wed, 20 Dec 2017 14:34:17 -0800 (PST) Message-ID: <1513809252.10710.1.camel@redhat.com> Subject: [PATCH] Linux x86/x86_64: does not provide some request constants [BZ #22433] From: Martin Balao To: libc-alpha@sourceware.org Date: Wed, 20 Dec 2017 19:34:12 -0300 Mime-Version: 1.0 Linux arch-specific constants added to sys/ptrace.h header: PTRACE_GET_THREAD_AREA (x86, x86_64), PTRACE_SET_THREAD_AREA (x86, x86_64), PTRACE_SYSEMU (x86, x86_64), PTRACE_SYSEMU_SINGLESTEP (x86, x86_64) and PTRACE_ARCH_PRCTL (x86_64). --- 2017-12-20  Martin Balao   [BZ #22433] * sysdeps/unix/sysv/linux/x86/sys/ptrace.h: New file. Constants added: PTRACE_GET_THREAD_AREA, PTRACE_SET_THREAD_AREA, PTRACE_SYSEMU and PTRACE_SYSEMU_SINGLESTEP. * sysdeps/unix/sysv/linux/x86_64/sys/ptrace.h: New file. Constants added: PTRACE_GET_THREAD_AREA, PTRACE_SET_THREAD_AREA, PTRACE_ARCH_PRCTL, PTRACE_SYSEMU and PTRACE_SYSEMU_SINGLESTEP. --  ChangeLog                                   |  10 ++  sysdeps/unix/sysv/linux/x86/sys/ptrace.h    | 245 +++++++++++++++++++++++++++  sysdeps/unix/sysv/linux/x86_64/sys/ptrace.h | 249 ++++++++++++++++++++++++++++  3 files changed, 504 insertions(+) +     pid_t PID, void *ADDR, int DATA, void *ADDR2 +   after REQUEST.  */ +extern long int ptrace (enum __ptrace_request __request, ...) __THROW; + +__END_DECLS + +#endif /* _SYS_PTRACE_H */ diff --git a/ChangeLog b/ChangeLog index eb9204d..dcdd096 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2017-12-20  Martin Balao   + + [BZ #22433] + * sysdeps/unix/sysv/linux/x86/sys/ptrace.h: New file. + Constants added: PTRACE_GET_THREAD_AREA, PTRACE_SET_THREAD_AREA, + PTRACE_SYSEMU and PTRACE_SYSEMU_SINGLESTEP. + * sysdeps/unix/sysv/linux/x86_64/sys/ptrace.h: New file. + Constants added: PTRACE_GET_THREAD_AREA, PTRACE_SET_THREAD_AREA, + PTRACE_ARCH_PRCTL, PTRACE_SYSEMU and PTRACE_SYSEMU_SINGLESTEP. +  2017-10-04  Florian Weimer       * scripts/check-local-headers.sh: Ignore nspr4 header file diff --git a/sysdeps/unix/sysv/linux/x86/sys/ptrace.h b/sysdeps/unix/sysv/linux/x86/sys/ptrace.h new file mode 100644 index 0000000..41b1c7b --- /dev/null +++ b/sysdeps/unix/sysv/linux/x86/sys/ptrace.h @@ -0,0 +1,245 @@ +/* `ptrace' debugger support interface.  Linux/x86 version. +   Copyright (C) 1996-2017 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, see +   .  */ + +#ifndef _SYS_PTRACE_H +#define _SYS_PTRACE_H 1 + +#include +#include + +__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 = 1, +#define PT_READ_I PTRACE_PEEKTEXT + +  /* Return the word in the process's data space at address ADDR.  */ +  PTRACE_PEEKDATA = 2, +#define PT_READ_D PTRACE_PEEKDATA + +  /* Return the word in the process's user area at offset ADDR.  */ +  PTRACE_PEEKUSER = 3, +#define PT_READ_U PTRACE_PEEKUSER + +  /* Write the word DATA into the process's text space at address ADDR.  */ +  PTRACE_POKETEXT = 4, +#define PT_WRITE_I PTRACE_POKETEXT + +  /* Write the word DATA into the process's data space at address ADDR.  */ +  PTRACE_POKEDATA = 5, +#define PT_WRITE_D PTRACE_POKEDATA + +  /* Write the word DATA into the process's user area at offset ADDR.  */ +  PTRACE_POKEUSER = 6, +#define PT_WRITE_U PTRACE_POKEUSER + +  /* Continue the process.  */ +  PTRACE_CONT = 7, +#define PT_CONTINUE PTRACE_CONT + +  /* Kill the process.  */ +  PTRACE_KILL = 8, +#define PT_KILL PTRACE_KILL + +  /* Single step the process. +     This is not supported on all machines.  */ +  PTRACE_SINGLESTEP = 9, +#define PT_STEP PTRACE_SINGLESTEP + +  /* Get all general purpose registers used by a processes. +     This is not supported on all machines.  */ +   PTRACE_GETREGS = 12, +#define PT_GETREGS PTRACE_GETREGS + +  /* Set all general purpose registers used by a processes. +     This is not supported on all machines.  */ +   PTRACE_SETREGS = 13, +#define PT_SETREGS PTRACE_SETREGS + +  /* Get all floating point registers used by a processes. +     This is not supported on all machines.  */ +   PTRACE_GETFPREGS = 14, +#define PT_GETFPREGS PTRACE_GETFPREGS + +  /* Set all floating point registers used by a processes. +     This is not supported on all machines.  */ +   PTRACE_SETFPREGS = 15, +#define PT_SETFPREGS PTRACE_SETFPREGS + +  /* Attach to a process that is already running. */ +  PTRACE_ATTACH = 16, +#define PT_ATTACH PTRACE_ATTACH + +  /* Detach from a process attached to with PTRACE_ATTACH.  */ +  PTRACE_DETACH = 17, +#define PT_DETACH PTRACE_DETACH + +  /* Get all extended floating point registers used by a processes. +     This is not supported on all machines.  */ +   PTRACE_GETFPXREGS = 18, +#define PT_GETFPXREGS PTRACE_GETFPXREGS + +  /* Set all extended floating point registers used by a processes. +     This is not supported on all machines.  */ +   PTRACE_SETFPXREGS = 19, +#define PT_SETFPXREGS PTRACE_SETFPXREGS + +  /* Continue and stop at the next (return from) syscall.  */ +  PTRACE_SYSCALL = 24, +#define PT_SYSCALL PTRACE_SYSCALL + +  /* Read a TLS entry in the GDT.  */ +  PTRACE_GET_THREAD_AREA = 25, +#define PT_GET_THREAD_AREA PTRACE_GET_THREAD_AREA + +  /* Write a TLS entry in the GDT.  */ +  PTRACE_SET_THREAD_AREA = 26, +#define PT_SET_THREAD_AREA PTRACE_SET_THREAD_AREA + +  /* Continue and stop on entry to the next system call.  */ +  PTRACE_SYSEMU = 31, +#define PT_SYSEMU PTRACE_SYSEMU + +  /* Single-step if not entry to a system call.  */ +  PTRACE_SYSEMU_SINGLESTEP = 32, +#define PT_SYSEMU_SINGLESTEP PTRACE_SYSEMU_SINGLESTEP + +  /* Set ptrace filter options.  */ +  PTRACE_SETOPTIONS = 0x4200, +#define PT_SETOPTIONS PTRACE_SETOPTIONS + +  /* Get last ptrace message.  */ +  PTRACE_GETEVENTMSG = 0x4201, +#define PT_GETEVENTMSG PTRACE_GETEVENTMSG + +  /* Get siginfo for process.  */ +  PTRACE_GETSIGINFO = 0x4202, +#define PT_GETSIGINFO PTRACE_GETSIGINFO + +  /* Set new siginfo for process.  */ +  PTRACE_SETSIGINFO = 0x4203, +#define PT_SETSIGINFO PTRACE_SETSIGINFO + +  /* Get register content.  */ +  PTRACE_GETREGSET = 0x4204, +#define PTRACE_GETREGSET PTRACE_GETREGSET + +  /* Set register content.  */ +  PTRACE_SETREGSET = 0x4205, +#define PTRACE_SETREGSET PTRACE_SETREGSET + +  /* Like PTRACE_ATTACH, but do not force tracee to trap and do not affect +     signal or group stop state.  */ +  PTRACE_SEIZE = 0x4206, +#define PTRACE_SEIZE PTRACE_SEIZE + +  /* Trap seized tracee.  */ +  PTRACE_INTERRUPT = 0x4207, +#define PTRACE_INTERRUPT PTRACE_INTERRUPT + +  /* Wait for next group event.  */ +  PTRACE_LISTEN = 0x4208, +#define PTRACE_LISTEN PTRACE_LISTEN + +  PTRACE_PEEKSIGINFO = 0x4209, +#define PTRACE_PEEKSIGINFO PTRACE_PEEKSIGINFO + +  PTRACE_GETSIGMASK = 0x420a, +#define PTRACE_GETSIGMASK PTRACE_GETSIGMASK + +  PTRACE_SETSIGMASK = 0x420b, +#define PTRACE_SETSIGMASK PTRACE_SETSIGMASK + +  PTRACE_SECCOMP_GET_FILTER = 0x420c +#define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER +}; + + +/* Flag for PTRACE_LISTEN.  */ +enum __ptrace_flags +{ +  PTRACE_SEIZE_DEVEL = 0x80000000 +}; + +/* Options set using PTRACE_SETOPTIONS.  */ +enum __ptrace_setoptions +{ +  PTRACE_O_TRACESYSGOOD = 0x00000001, +  PTRACE_O_TRACEFORK = 0x00000002, +  PTRACE_O_TRACEVFORK   = 0x00000004, +  PTRACE_O_TRACECLONE = 0x00000008, +  PTRACE_O_TRACEEXEC = 0x00000010, +  PTRACE_O_TRACEVFORKDONE = 0x00000020, +  PTRACE_O_TRACEEXIT = 0x00000040, +  PTRACE_O_TRACESECCOMP = 0x00000080, +  PTRACE_O_EXITKILL = 0x00100000, +  PTRACE_O_SUSPEND_SECCOMP = 0x00200000, +  PTRACE_O_MASK = 0x003000ff +}; + +enum __ptrace_eventcodes +{ +/* Wait extended result codes for the above trace options.  */ +  PTRACE_EVENT_FORK = 1, +  PTRACE_EVENT_VFORK = 2, +  PTRACE_EVENT_CLONE = 3, +  PTRACE_EVENT_EXEC = 4, +  PTRACE_EVENT_VFORK_DONE = 5, +  PTRACE_EVENT_EXIT = 6, +  PTRACE_EVENT_SECCOMP  = 7, +/* Extended result codes enabled by means other than options.  */ +  PTRACE_EVENT_STOP = 128 +}; + +/* Arguments for PTRACE_PEEKSIGINFO.  */ +struct __ptrace_peeksiginfo_args +{ +  __uint64_t off; /* From which siginfo to start.  */ +  __uint32_t flags; /* Flags for peeksiginfo.  */ +  __int32_t nr; /* How many siginfos to take.  */ +}; + +enum __ptrace_peeksiginfo_flags +{ +  /* Read signals from a shared (process wide) queue.  */ +  PTRACE_PEEKSIGINFO_SHARED = (1 << 0) +}; + +/* 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 long int ptrace (enum __ptrace_request __request, ...) __THROW; + +__END_DECLS + +#endif /* _SYS_PTRACE_H */ diff --git a/sysdeps/unix/sysv/linux/x86_64/sys/ptrace.h b/sysdeps/unix/sysv/linux/x86_64/sys/ptrace.h new file mode 100644 index 0000000..bb28503 --- /dev/null +++ b/sysdeps/unix/sysv/linux/x86_64/sys/ptrace.h @@ -0,0 +1,249 @@ +/* `ptrace' debugger support interface.  Linux/x86_64 version. +   Copyright (C) 1996-2017 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, see +   .  */ + +#ifndef _SYS_PTRACE_H +#define _SYS_PTRACE_H 1 + +#include +#include + +__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 = 1, +#define PT_READ_I PTRACE_PEEKTEXT + +  /* Return the word in the process's data space at address ADDR.  */ +  PTRACE_PEEKDATA = 2, +#define PT_READ_D PTRACE_PEEKDATA + +  /* Return the word in the process's user area at offset ADDR.  */ +  PTRACE_PEEKUSER = 3, +#define PT_READ_U PTRACE_PEEKUSER + +  /* Write the word DATA into the process's text space at address ADDR.  */ +  PTRACE_POKETEXT = 4, +#define PT_WRITE_I PTRACE_POKETEXT + +  /* Write the word DATA into the process's data space at address ADDR.  */ +  PTRACE_POKEDATA = 5, +#define PT_WRITE_D PTRACE_POKEDATA + +  /* Write the word DATA into the process's user area at offset ADDR.  */ +  PTRACE_POKEUSER = 6, +#define PT_WRITE_U PTRACE_POKEUSER + +  /* Continue the process.  */ +  PTRACE_CONT = 7, +#define PT_CONTINUE PTRACE_CONT + +  /* Kill the process.  */ +  PTRACE_KILL = 8, +#define PT_KILL PTRACE_KILL + +  /* Single step the process. +     This is not supported on all machines.  */ +  PTRACE_SINGLESTEP = 9, +#define PT_STEP PTRACE_SINGLESTEP + +  /* Get all general purpose registers used by a processes. +     This is not supported on all machines.  */ +   PTRACE_GETREGS = 12, +#define PT_GETREGS PTRACE_GETREGS + +  /* Set all general purpose registers used by a processes. +     This is not supported on all machines.  */ +   PTRACE_SETREGS = 13, +#define PT_SETREGS PTRACE_SETREGS + +  /* Get all floating point registers used by a processes. +     This is not supported on all machines.  */ +   PTRACE_GETFPREGS = 14, +#define PT_GETFPREGS PTRACE_GETFPREGS + +  /* Set all floating point registers used by a processes. +     This is not supported on all machines.  */ +   PTRACE_SETFPREGS = 15, +#define PT_SETFPREGS PTRACE_SETFPREGS + +  /* Attach to a process that is already running. */ +  PTRACE_ATTACH = 16, +#define PT_ATTACH PTRACE_ATTACH + +  /* Detach from a process attached to with PTRACE_ATTACH.  */ +  PTRACE_DETACH = 17, +#define PT_DETACH PTRACE_DETACH + +  /* Get all extended floating point registers used by a processes. +     This is not supported on all machines.  */ +   PTRACE_GETFPXREGS = 18, +#define PT_GETFPXREGS PTRACE_GETFPXREGS + +  /* Set all extended floating point registers used by a processes. +     This is not supported on all machines.  */ +   PTRACE_SETFPXREGS = 19, +#define PT_SETFPXREGS PTRACE_SETFPXREGS + +  /* Continue and stop at the next (return from) syscall.  */ +  PTRACE_SYSCALL = 24, +#define PT_SYSCALL PTRACE_SYSCALL + +  /* Read a TLS entry in the GDT.  */ +  PTRACE_GET_THREAD_AREA = 25, +#define PT_GET_THREAD_AREA PTRACE_GET_THREAD_AREA + +  /* Write a TLS entry in the GDT.  */ +  PTRACE_SET_THREAD_AREA = 26, +#define PT_SET_THREAD_AREA PTRACE_SET_THREAD_AREA + +  /* Access TLS data on 64 bit processes.  */ +  PTRACE_ARCH_PRCTL = 30, +#define PT_ARCH_PRCTL PTRACE_ARCH_PRCTL + +  /* Continue and stop on entry to the next system call.  */ +  PTRACE_SYSEMU = 31, +#define PT_SYSEMU PTRACE_SYSEMU + +  /* Single-step if not entry to a system call.  */ +  PTRACE_SYSEMU_SINGLESTEP = 32, +#define PT_SYSEMU_SINGLESTEP PTRACE_SYSEMU_SINGLESTEP + +  /* Set ptrace filter options.  */ +  PTRACE_SETOPTIONS = 0x4200, +#define PT_SETOPTIONS PTRACE_SETOPTIONS + +  /* Get last ptrace message.  */ +  PTRACE_GETEVENTMSG = 0x4201, +#define PT_GETEVENTMSG PTRACE_GETEVENTMSG + +  /* Get siginfo for process.  */ +  PTRACE_GETSIGINFO = 0x4202, +#define PT_GETSIGINFO PTRACE_GETSIGINFO + +  /* Set new siginfo for process.  */ +  PTRACE_SETSIGINFO = 0x4203, +#define PT_SETSIGINFO PTRACE_SETSIGINFO + +  /* Get register content.  */ +  PTRACE_GETREGSET = 0x4204, +#define PTRACE_GETREGSET PTRACE_GETREGSET + +  /* Set register content.  */ +  PTRACE_SETREGSET = 0x4205, +#define PTRACE_SETREGSET PTRACE_SETREGSET + +  /* Like PTRACE_ATTACH, but do not force tracee to trap and do not affect +     signal or group stop state.  */ +  PTRACE_SEIZE = 0x4206, +#define PTRACE_SEIZE PTRACE_SEIZE + +  /* Trap seized tracee.  */ +  PTRACE_INTERRUPT = 0x4207, +#define PTRACE_INTERRUPT PTRACE_INTERRUPT + +  /* Wait for next group event.  */ +  PTRACE_LISTEN = 0x4208, +#define PTRACE_LISTEN PTRACE_LISTEN + +  PTRACE_PEEKSIGINFO = 0x4209, +#define PTRACE_PEEKSIGINFO PTRACE_PEEKSIGINFO + +  PTRACE_GETSIGMASK = 0x420a, +#define PTRACE_GETSIGMASK PTRACE_GETSIGMASK + +  PTRACE_SETSIGMASK = 0x420b, +#define PTRACE_SETSIGMASK PTRACE_SETSIGMASK + +  PTRACE_SECCOMP_GET_FILTER = 0x420c +#define PTRACE_SECCOMP_GET_FILTER PTRACE_SECCOMP_GET_FILTER +}; + + +/* Flag for PTRACE_LISTEN.  */ +enum __ptrace_flags +{ +  PTRACE_SEIZE_DEVEL = 0x80000000 +}; + +/* Options set using PTRACE_SETOPTIONS.  */ +enum __ptrace_setoptions +{ +  PTRACE_O_TRACESYSGOOD = 0x00000001, +  PTRACE_O_TRACEFORK = 0x00000002, +  PTRACE_O_TRACEVFORK   = 0x00000004, +  PTRACE_O_TRACECLONE = 0x00000008, +  PTRACE_O_TRACEEXEC = 0x00000010, +  PTRACE_O_TRACEVFORKDONE = 0x00000020, +  PTRACE_O_TRACEEXIT = 0x00000040, +  PTRACE_O_TRACESECCOMP = 0x00000080, +  PTRACE_O_EXITKILL = 0x00100000, +  PTRACE_O_SUSPEND_SECCOMP = 0x00200000, +  PTRACE_O_MASK = 0x003000ff +}; + +enum __ptrace_eventcodes +{ +/* Wait extended result codes for the above trace options.  */ +  PTRACE_EVENT_FORK = 1, +  PTRACE_EVENT_VFORK = 2, +  PTRACE_EVENT_CLONE = 3, +  PTRACE_EVENT_EXEC = 4, +  PTRACE_EVENT_VFORK_DONE = 5, +  PTRACE_EVENT_EXIT = 6, +  PTRACE_EVENT_SECCOMP  = 7, +/* Extended result codes enabled by means other than options.  */ +  PTRACE_EVENT_STOP = 128 +}; + +/* Arguments for PTRACE_PEEKSIGINFO.  */ +struct __ptrace_peeksiginfo_args +{ +  __uint64_t off; /* From which siginfo to start.  */ +  __uint32_t flags; /* Flags for peeksiginfo.  */ +  __int32_t nr; /* How many siginfos to take.  */ +}; + +enum __ptrace_peeksiginfo_flags +{ +  /* Read signals from a shared (process wide) queue.  */ +  PTRACE_PEEKSIGINFO_SHARED = (1 << 0) +}; + +/* 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: