public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* 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).