summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSzabolcs Nagy <nsz@port70.net>2018-07-08 15:16:54 +0200
committerRich Felker <dalias@aerifal.cx>2018-07-17 22:25:08 -0400
commitdf6d9450ea19fd71e52cf5cdb4c85beb73066394 (patch)
tree34c80d0c750ec97ce092b1fb0cdf7251f133d16e
parent7ea32a8282b743bb1637b9e1da5f76dcd472a704 (diff)
downloadmusl-df6d9450ea19fd71e52cf5cdb4c85beb73066394.tar.gz
add support for arch-specific ptrace command macros
sys/ptrace.h is target specific, use bits/ptrace.h to add target specific macro definitions. these macros are kept in the generic sys/ptrace.h even though some targets don't support them: PTRACE_GETREGS PTRACE_SETREGS PTRACE_GETFPREGS PTRACE_SETFPREGS PTRACE_GETFPXREGS PTRACE_SETFPXREGS so no macro definition got removed in this patch on any target. only s390x has a numerically conflicting macro definition (PTRACE_SINGLEBLOCK). the PT_ aliases follow glibc headers, otherwise the definitions come from linux uapi headers except ones that are skipped in glibc and there is no real kernel support (s390x PTRACE_*_AREA) or need special type definitions (mips PTRACE_*_WATCH_*) or only relevant for linux 2.4 compatibility (PTRACE_OLDSETOPTIONS).
-rw-r--r--arch/generic/bits/ptrace.h0
-rw-r--r--arch/i386/bits/ptrace.h11
-rw-r--r--arch/m68k/bits/ptrace.h2
-rw-r--r--arch/mips/bits/ptrace.h9
-rw-r--r--arch/mips64/bits/ptrace.h9
-rw-r--r--arch/mipsn32/bits/ptrace.h9
-rw-r--r--arch/powerpc/bits/ptrace.h23
-rw-r--r--arch/powerpc64/bits/ptrace.h23
-rw-r--r--arch/s390x/bits/ptrace.h9
-rw-r--r--arch/x32/bits/ptrace.h13
-rw-r--r--arch/x86_64/bits/ptrace.h13
-rw-r--r--include/sys/ptrace.h2
12 files changed, 123 insertions, 0 deletions
diff --git a/arch/generic/bits/ptrace.h b/arch/generic/bits/ptrace.h
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/arch/generic/bits/ptrace.h
diff --git a/arch/i386/bits/ptrace.h b/arch/i386/bits/ptrace.h
new file mode 100644
index 00000000..7d0efbf3
--- /dev/null
+++ b/arch/i386/bits/ptrace.h
@@ -0,0 +1,11 @@
+#define PTRACE_GET_THREAD_AREA 25
+#define PTRACE_SET_THREAD_AREA 26
+#define PTRACE_SYSEMU 31
+#define PTRACE_SYSEMU_SINGLESTEP 32
+#define PTRACE_SINGLEBLOCK 33
+
+#define PT_GET_THREAD_AREA PTRACE_GET_THREAD_AREA
+#define PT_SET_THREAD_AREA PTRACE_SET_THREAD_AREA
+#define PT_SYSEMU PTRACE_SYSEMU
+#define PT_SYSEMU_SINGLESTEP PTRACE_SYSEMU_SINGLESTEP
+#define PT_STEPBLOCK PTRACE_SINGLEBLOCK
diff --git a/arch/m68k/bits/ptrace.h b/arch/m68k/bits/ptrace.h
new file mode 100644
index 00000000..da93e7a7
--- /dev/null
+++ b/arch/m68k/bits/ptrace.h
@@ -0,0 +1,2 @@
+#define PTRACE_GET_THREAD_AREA 25
+#define PTRACE_SINGLEBLOCK 33
diff --git a/arch/mips/bits/ptrace.h b/arch/mips/bits/ptrace.h
new file mode 100644
index 00000000..77a01c06
--- /dev/null
+++ b/arch/mips/bits/ptrace.h
@@ -0,0 +1,9 @@
+#define PTRACE_GET_THREAD_AREA 25
+#define PTRACE_SET_THREAD_AREA 26
+#define PTRACE_PEEKTEXT_3264 0xc0
+#define PTRACE_PEEKDATA_3264 0xc1
+#define PTRACE_POKETEXT_3264 0xc2
+#define PTRACE_POKEDATA_3264 0xc3
+#define PTRACE_GET_THREAD_AREA_3264 0xc4
+#define PTRACE_GET_WATCH_REGS 0xd0
+#define PTRACE_SET_WATCH_REGS 0xd1
diff --git a/arch/mips64/bits/ptrace.h b/arch/mips64/bits/ptrace.h
new file mode 100644
index 00000000..77a01c06
--- /dev/null
+++ b/arch/mips64/bits/ptrace.h
@@ -0,0 +1,9 @@
+#define PTRACE_GET_THREAD_AREA 25
+#define PTRACE_SET_THREAD_AREA 26
+#define PTRACE_PEEKTEXT_3264 0xc0
+#define PTRACE_PEEKDATA_3264 0xc1
+#define PTRACE_POKETEXT_3264 0xc2
+#define PTRACE_POKEDATA_3264 0xc3
+#define PTRACE_GET_THREAD_AREA_3264 0xc4
+#define PTRACE_GET_WATCH_REGS 0xd0
+#define PTRACE_SET_WATCH_REGS 0xd1
diff --git a/arch/mipsn32/bits/ptrace.h b/arch/mipsn32/bits/ptrace.h
new file mode 100644
index 00000000..77a01c06
--- /dev/null
+++ b/arch/mipsn32/bits/ptrace.h
@@ -0,0 +1,9 @@
+#define PTRACE_GET_THREAD_AREA 25
+#define PTRACE_SET_THREAD_AREA 26
+#define PTRACE_PEEKTEXT_3264 0xc0
+#define PTRACE_PEEKDATA_3264 0xc1
+#define PTRACE_POKETEXT_3264 0xc2
+#define PTRACE_POKEDATA_3264 0xc3
+#define PTRACE_GET_THREAD_AREA_3264 0xc4
+#define PTRACE_GET_WATCH_REGS 0xd0
+#define PTRACE_SET_WATCH_REGS 0xd1
diff --git a/arch/powerpc/bits/ptrace.h b/arch/powerpc/bits/ptrace.h
new file mode 100644
index 00000000..75086ca0
--- /dev/null
+++ b/arch/powerpc/bits/ptrace.h
@@ -0,0 +1,23 @@
+#define PTRACE_GETVRREGS 0x12
+#define PTRACE_SETVRREGS 0x13
+#define PTRACE_GETEVRREGS 0x14
+#define PTRACE_SETEVRREGS 0x15
+#define PTRACE_GETREGS64 0x16
+#define PTRACE_SETREGS64 0x17
+#define PTRACE_GET_DEBUGREG 0x19
+#define PTRACE_SET_DEBUGREG 0x1a
+#define PTRACE_GETVSRREGS 0x1b
+#define PTRACE_SETVSRREGS 0x1c
+#define PTRACE_SINGLEBLOCK 0x100
+
+#define PT_GETVRREGS PTRACE_GETVRREGS
+#define PT_SETVRREGS PTRACE_SETVRREGS
+#define PT_GETEVRREGS PTRACE_GETEVRREGS
+#define PT_SETEVRREGS PTRACE_SETEVRREGS
+#define PT_GETREGS64 PTRACE_GETREGS64
+#define PT_SETREGS64 PTRACE_SETREGS64
+#define PT_GET_DEBUGREG PTRACE_GET_DEBUGREG
+#define PT_SET_DEBUGREG PTRACE_SET_DEBUGREG
+#define PT_GETVSRREGS PTRACE_GETVSRREGS
+#define PT_SETVSRREGS PTRACE_SETVSRREGS
+#define PT_STEPBLOCK PTRACE_SINGLEBLOCK
diff --git a/arch/powerpc64/bits/ptrace.h b/arch/powerpc64/bits/ptrace.h
new file mode 100644
index 00000000..75086ca0
--- /dev/null
+++ b/arch/powerpc64/bits/ptrace.h
@@ -0,0 +1,23 @@
+#define PTRACE_GETVRREGS 0x12
+#define PTRACE_SETVRREGS 0x13
+#define PTRACE_GETEVRREGS 0x14
+#define PTRACE_SETEVRREGS 0x15
+#define PTRACE_GETREGS64 0x16
+#define PTRACE_SETREGS64 0x17
+#define PTRACE_GET_DEBUGREG 0x19
+#define PTRACE_SET_DEBUGREG 0x1a
+#define PTRACE_GETVSRREGS 0x1b
+#define PTRACE_SETVSRREGS 0x1c
+#define PTRACE_SINGLEBLOCK 0x100
+
+#define PT_GETVRREGS PTRACE_GETVRREGS
+#define PT_SETVRREGS PTRACE_SETVRREGS
+#define PT_GETEVRREGS PTRACE_GETEVRREGS
+#define PT_SETEVRREGS PTRACE_SETEVRREGS
+#define PT_GETREGS64 PTRACE_GETREGS64
+#define PT_SETREGS64 PTRACE_SETREGS64
+#define PT_GET_DEBUGREG PTRACE_GET_DEBUGREG
+#define PT_SET_DEBUGREG PTRACE_SET_DEBUGREG
+#define PT_GETVSRREGS PTRACE_GETVSRREGS
+#define PT_SETVSRREGS PTRACE_SETVSRREGS
+#define PT_STEPBLOCK PTRACE_SINGLEBLOCK
diff --git a/arch/s390x/bits/ptrace.h b/arch/s390x/bits/ptrace.h
new file mode 100644
index 00000000..d50e3262
--- /dev/null
+++ b/arch/s390x/bits/ptrace.h
@@ -0,0 +1,9 @@
+#define PTRACE_SINGLEBLOCK 12
+#define PTRACE_PEEKUSR_AREA 0x5000
+#define PTRACE_POKEUSR_AREA 0x5001
+#define PTRACE_GET_LAST_BREAK 0x5006
+#define PTRACE_ENABLE_TE 0x5009
+#define PTRACE_DISABLE_TE 0x5010
+#define PTRACE_TE_ABORT_RAND 0x5011
+
+#define PT_STEPBLOCK PTRACE_SINGLEBLOCK
diff --git a/arch/x32/bits/ptrace.h b/arch/x32/bits/ptrace.h
new file mode 100644
index 00000000..7f8a09b5
--- /dev/null
+++ b/arch/x32/bits/ptrace.h
@@ -0,0 +1,13 @@
+#define PTRACE_GET_THREAD_AREA 25
+#define PTRACE_SET_THREAD_AREA 26
+#define PTRACE_ARCH_PRCTL 30
+#define PTRACE_SYSEMU 31
+#define PTRACE_SYSEMU_SINGLESTEP 32
+#define PTRACE_SINGLEBLOCK 33
+
+#define PT_GET_THREAD_AREA PTRACE_GET_THREAD_AREA
+#define PT_SET_THREAD_AREA PTRACE_SET_THREAD_AREA
+#define PT_ARCH_PRCTL PTRACE_ARCH_PRCTL
+#define PT_SYSEMU PTRACE_SYSEMU
+#define PT_SYSEMU_SINGLESTEP PTRACE_SYSEMU_SINGLESTEP
+#define PT_STEPBLOCK PTRACE_SINGLEBLOCK
diff --git a/arch/x86_64/bits/ptrace.h b/arch/x86_64/bits/ptrace.h
new file mode 100644
index 00000000..7f8a09b5
--- /dev/null
+++ b/arch/x86_64/bits/ptrace.h
@@ -0,0 +1,13 @@
+#define PTRACE_GET_THREAD_AREA 25
+#define PTRACE_SET_THREAD_AREA 26
+#define PTRACE_ARCH_PRCTL 30
+#define PTRACE_SYSEMU 31
+#define PTRACE_SYSEMU_SINGLESTEP 32
+#define PTRACE_SINGLEBLOCK 33
+
+#define PT_GET_THREAD_AREA PTRACE_GET_THREAD_AREA
+#define PT_SET_THREAD_AREA PTRACE_SET_THREAD_AREA
+#define PT_ARCH_PRCTL PTRACE_ARCH_PRCTL
+#define PT_SYSEMU PTRACE_SYSEMU
+#define PT_SYSEMU_SINGLESTEP PTRACE_SYSEMU_SINGLESTEP
+#define PT_STEPBLOCK PTRACE_SINGLEBLOCK
diff --git a/include/sys/ptrace.h b/include/sys/ptrace.h
index 114185fd..229e1f3d 100644
--- a/include/sys/ptrace.h
+++ b/include/sys/ptrace.h
@@ -88,6 +88,8 @@ extern "C" {
#define PTRACE_PEEKSIGINFO_SHARED 1
+#include <bits/ptrace.h>
+
struct __ptrace_peeksiginfo_args {
uint64_t off;
uint32_t flags;