* Add more ptrace constants for AArch64 and PowerPC
@ 2021-02-08 22:18 Joseph Myers
2021-02-08 22:42 ` Dmitry V. Levin
2021-02-12 12:50 ` Vaseeharan Vinayagamoorthy
0 siblings, 2 replies; 4+ messages in thread
From: Joseph Myers @ 2021-02-08 22:18 UTC (permalink / raw)
To: libc-alpha
Linux 5.10 adds PTRACE_PEEKMTETAGS and PTRACE_POKEMTETAGS for AArch64.
Adding those shows up that glibc is also missing PTRACE_SYSEMU and
PTRACE_SYSEMU_SINGLESTEP, for AArch64 (where they were added to Linux
in 5.3) and for PowerPC (where they were added in Linux 4.20); it
already has those two defines for x86. Add all those defines to
glibc's headers.
Tested with build-many-glibcs.py for aarch64-linux-gnu and
powerpc-linux-gnu.
diff --git a/sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h b/sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h
index 806178af0e..de26da0023 100644
--- a/sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h
+++ b/sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h
@@ -82,6 +82,22 @@ enum __ptrace_request
PTRACE_SYSCALL = 24,
#define PT_SYSCALL PTRACE_SYSCALL
+ /* Continue and stop at the next syscall, it will not be executed. */
+ PTRACE_SYSEMU = 31,
+#define PT_SYSEMU PTRACE_SYSEMU
+
+ /* Single step the process, the next syscall will not be executed. */
+ PTRACE_SYSEMU_SINGLESTEP = 32,
+#define PT_SYSEMU_SINGLESTEP PTRACE_SYSEMU_SINGLESTEP
+
+ /* Read MTE tags. */
+ PTRACE_PEEKMTETAGS = 33,
+#define PT_PEEKMTETAGS PTRACE_PEEKMTETAGS
+
+ /* Write MTE tags. */
+ PTRACE_POKEMTETAGS = 34,
+#define PT_POKEMTETAGS PTRACE_POKEMTETAGS
+
/* Set ptrace filter options. */
PTRACE_SETOPTIONS = 0x4200,
#define PT_SETOPTIONS PTRACE_SETOPTIONS
diff --git a/sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h b/sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h
index 00730cf5d3..032c91e817 100644
--- a/sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h
+++ b/sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h
@@ -70,6 +70,8 @@ __BEGIN_DECLS
# undef PTRACE_SYSCALL_INFO_ENTRY
# undef PTRACE_SYSCALL_INFO_EXIT
# undef PTRACE_SYSCALL_INFO_SECCOMP
+# undef PTRACE_SYSEMU
+# undef PTRACE_SYSEMU_SINGLESTEP
# undef PTRACE_TRACEME
#endif
@@ -188,6 +190,14 @@ enum __ptrace_request
PTRACE_SETVSRREGS = 28,
#define PT_SETVSRREGS PTRACE_SETVSRREGS
+ /* Continue and stop at the next syscall, it will not be executed. */
+ PTRACE_SYSEMU = 29,
+#define PT_SYSEMU PTRACE_SYSEMU
+
+ /* Single step the process, the next syscall will not be executed. */
+ PTRACE_SYSEMU_SINGLESTEP = 30,
+#define PT_SYSEMU_SINGLESTEP PTRACE_SYSEMU_SINGLESTEP
+
/* Execute process until next taken branch. */
PTRACE_SINGLEBLOCK = 256,
#define PT_STEPBLOCK PTRACE_SINGLEBLOCK
--
Joseph S. Myers
joseph@codesourcery.com
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Add more ptrace constants for AArch64 and PowerPC
2021-02-08 22:18 Add more ptrace constants for AArch64 and PowerPC Joseph Myers
@ 2021-02-08 22:42 ` Dmitry V. Levin
2021-02-12 12:50 ` Vaseeharan Vinayagamoorthy
1 sibling, 0 replies; 4+ messages in thread
From: Dmitry V. Levin @ 2021-02-08 22:42 UTC (permalink / raw)
To: libc-alpha
On Mon, Feb 08, 2021 at 10:18:41PM +0000, Joseph Myers wrote:
> Linux 5.10 adds PTRACE_PEEKMTETAGS and PTRACE_POKEMTETAGS for AArch64.
> Adding those shows up that glibc is also missing PTRACE_SYSEMU and
> PTRACE_SYSEMU_SINGLESTEP, for AArch64 (where they were added to Linux
> in 5.3) and for PowerPC (where they were added in Linux 4.20); it
> already has those two defines for x86. Add all those defines to
> glibc's headers.
LGTM, thanks.
Just for the record, PTRACE_PEEKMTETAGS and PTRACE_POKEMTETAGS were
introduced by Linux kernel commit v5.10-rc1~49^2~9^2~8.
--
ldv
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Add more ptrace constants for AArch64 and PowerPC
2021-02-08 22:18 Add more ptrace constants for AArch64 and PowerPC Joseph Myers
2021-02-08 22:42 ` Dmitry V. Levin
@ 2021-02-12 12:50 ` Vaseeharan Vinayagamoorthy
2021-02-12 19:25 ` Joseph Myers
1 sibling, 1 reply; 4+ messages in thread
From: Vaseeharan Vinayagamoorthy @ 2021-02-12 12:50 UTC (permalink / raw)
To: Joseph Myers, libc-alpha
After this patch, the following errors are seen when building gdbserver:
In file included from …/install/aarch64-none-linux-gnu/libc/usr/include/sys/ptrace.h:86:3: error: expected identifier before numeric constant
86 | PTRACE_SYSEMU = 31,
| ^~~~~~~~~~~~~
…/install/aarch64-none-linux-gnu/libc/usr/include/sys/ptrace.h:86:3: error: expected ‘}’ before numeric constant
In file included from …/src/binutils-gdb--gdb/gdbserver/../gdb/nat/aarch64-linux-hw-point.c:27:
…/install/aarch64-none-linux-gnu/libc/usr/include/sys/ptrace.h:30:1: note: to match this ‘{’
30 | {
| ^
In file included from …/src/binutils-gdb--gdb/gdbserver/../gdb/nat/aarch64-linux-hw-point.c:26:
…/install/aarch64-none-linux-gnu/libc/usr/include/sys/ptrace.h:86:3: error: expected unqualified-id before numeric constant
86 | PTRACE_SYSEMU = 31,
| ^~~~~~~~~~~~~
In file included from …/src/binutils-gdb--gdb/gdbserver/../gdb/nat/aarch64-linux-hw-point.c:27:
…/src/binutils-gdb--gdb/gdbserver/../gdb/nat/aarch64-linux-hw-point.c: In function ‘void aarch64_linux_set_debug_regs(aarch64_debug_reg_state*, int, int)’:
…/src/binutils-gdb--gdb/gdbserver/../gdb/nat/aarch64-linux-hw-point.c:694:15: error: ‘PTRACE_SETREGSET’ was not declared in this scope
694 | if (ptrace (PTRACE_SETREGSET, tid,
| ^~~~~~~~~~~~~~~~
My build/host/target setup is:
Build: x86_64 (CentOS Linux 7)
Host: x86_64 (CentOS Linux 7)
Target: aarch64-none-linux-gnu / aarch64_be-none-linux-gnu
Kind regards
Vasee
On 08/02/2021, 22:19, "Libc-alpha on behalf of Joseph Myers" <libc-alpha-bounces@sourceware.org on behalf of joseph@codesourcery.com> wrote:
Linux 5.10 adds PTRACE_PEEKMTETAGS and PTRACE_POKEMTETAGS for AArch64.
Adding those shows up that glibc is also missing PTRACE_SYSEMU and
PTRACE_SYSEMU_SINGLESTEP, for AArch64 (where they were added to Linux
in 5.3) and for PowerPC (where they were added in Linux 4.20); it
already has those two defines for x86. Add all those defines to
glibc's headers.
Tested with build-many-glibcs.py for aarch64-linux-gnu and
powerpc-linux-gnu.
diff --git a/sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h b/sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h
index 806178af0e..de26da0023 100644
--- a/sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h
+++ b/sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h
@@ -82,6 +82,22 @@ enum __ptrace_request
PTRACE_SYSCALL = 24,
#define PT_SYSCALL PTRACE_SYSCALL
+ /* Continue and stop at the next syscall, it will not be executed. */
+ PTRACE_SYSEMU = 31,
+#define PT_SYSEMU PTRACE_SYSEMU
+
+ /* Single step the process, the next syscall will not be executed. */
+ PTRACE_SYSEMU_SINGLESTEP = 32,
+#define PT_SYSEMU_SINGLESTEP PTRACE_SYSEMU_SINGLESTEP
+
+ /* Read MTE tags. */
+ PTRACE_PEEKMTETAGS = 33,
+#define PT_PEEKMTETAGS PTRACE_PEEKMTETAGS
+
+ /* Write MTE tags. */
+ PTRACE_POKEMTETAGS = 34,
+#define PT_POKEMTETAGS PTRACE_POKEMTETAGS
+
/* Set ptrace filter options. */
PTRACE_SETOPTIONS = 0x4200,
#define PT_SETOPTIONS PTRACE_SETOPTIONS
diff --git a/sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h b/sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h
index 00730cf5d3..032c91e817 100644
--- a/sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h
+++ b/sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h
@@ -70,6 +70,8 @@ __BEGIN_DECLS
# undef PTRACE_SYSCALL_INFO_ENTRY
# undef PTRACE_SYSCALL_INFO_EXIT
# undef PTRACE_SYSCALL_INFO_SECCOMP
+# undef PTRACE_SYSEMU
+# undef PTRACE_SYSEMU_SINGLESTEP
# undef PTRACE_TRACEME
#endif
@@ -188,6 +190,14 @@ enum __ptrace_request
PTRACE_SETVSRREGS = 28,
#define PT_SETVSRREGS PTRACE_SETVSRREGS
+ /* Continue and stop at the next syscall, it will not be executed. */
+ PTRACE_SYSEMU = 29,
+#define PT_SYSEMU PTRACE_SYSEMU
+
+ /* Single step the process, the next syscall will not be executed. */
+ PTRACE_SYSEMU_SINGLESTEP = 30,
+#define PT_SYSEMU_SINGLESTEP PTRACE_SYSEMU_SINGLESTEP
+
/* Execute process until next taken branch. */
PTRACE_SINGLEBLOCK = 256,
#define PT_STEPBLOCK PTRACE_SINGLEBLOCK
--
Joseph S. Myers
joseph@codesourcery.com
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Add more ptrace constants for AArch64 and PowerPC
2021-02-12 12:50 ` Vaseeharan Vinayagamoorthy
@ 2021-02-12 19:25 ` Joseph Myers
0 siblings, 0 replies; 4+ messages in thread
From: Joseph Myers @ 2021-02-12 19:25 UTC (permalink / raw)
To: Vaseeharan Vinayagamoorthy; +Cc: libc-alpha
On Fri, 12 Feb 2021, Vaseeharan Vinayagamoorthy via Libc-alpha wrote:
> After this patch, the following errors are seen when building gdbserver:
>
> In file included from …/install/aarch64-none-linux-gnu/libc/usr/include/sys/ptrace.h:86:3: error: expected identifier before numeric constant
> 86 | PTRACE_SYSEMU = 31,
> | ^~~~~~~~~~~~~
That looks like the kernel and glibc ptrace headers have been included
together, something that may not work because they define the same
constants. We could make the AArch64 header in glibc undefine a series of
macros like the powerpc one does, to allow some cases of this to work.
--
Joseph S. Myers
joseph@codesourcery.com
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-02-12 19:25 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-08 22:18 Add more ptrace constants for AArch64 and PowerPC Joseph Myers
2021-02-08 22:42 ` Dmitry V. Levin
2021-02-12 12:50 ` Vaseeharan Vinayagamoorthy
2021-02-12 19:25 ` Joseph Myers
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).