[patch] linux ptrace updates

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

[patch] linux ptrace updates

Mike Frysinger
simple patch to add support for linux ptrace options:
 - PTRACE_SETOPTIONS
 - PTRACE_GETEVENTMSG
 - PTRACE_GETSIGINFO
 - PTRACE_SETSIGINFO
-mike

2006-09-17  Mike Frysinger  <[hidden email]>

        * sysdeps/unix/sysv/linux/sys/ptrace.h [PTRACE_SETOPTIONS,
        PTRACE_GETEVENTMSG, PTRACE_GETSIGINFO, PTRACE_SETSIGINFO]: Define.
        * sysdeps/unix/sysv/linux/ptrace.c [PTRACE_SETOPTIONS,
        PTRACE_GETEVENTMSG, PTRACE_GETSIGINFO, PTRACE_SETSIGINFO]: Check.

--- libc/sysdeps/unix/sysv/linux/ptrace.c
+++ libc/sysdeps/unix/sysv/linux/ptrace.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995,1996,1997,1998,2000,2003 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1998,2000,2003,2006 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
@@ -21,6 +21,7 @@
 #include <sys/ptrace.h>
 #include <sys/user.h>
 #include <stdarg.h>
+#include <signal.h>
 
 #include <sysdep.h>
 #include <sys/syscall.h>
@@ -89,6 +90,19 @@ ptrace (enum __ptrace_request request, .
 #endif
       break;
 
+    case PTRACE_GETSIGINFO:
+    case PTRACE_SETSIGINFO:
+      (void) CHECK_1 ((siginfo_t *) data);
+      break;
+
+    case PTRACE_GETEVENTMSG:
+      (void) CHECK_1 ((unsigned long *) data);
+      break;
+
+    case PTRACE_SETOPTIONS:
+      (void) CHECK_1 ((long *) data);
+      break;
+
     case PTRACE_TRACEME:
     case PTRACE_CONT:
     case PTRACE_KILL:
--- libc/sysdeps/unix/sysv/linux/sys/ptrace.h
+++ libc/sysdeps/unix/sysv/linux/sys/ptrace.h
@@ -1,5 +1,5 @@
 /* `ptrace' debugger support interface.  Linux version.
-   Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1996-1999,2000,2006 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
@@ -109,8 +109,24 @@ enum __ptrace_request
 #define PT_SETFPXREGS PTRACE_SETFPXREGS
 
   /* Continue and stop at the next (return from) syscall.  */
-  PTRACE_SYSCALL = 24
+  PTRACE_SYSCALL = 24,
 #define PT_SYSCALL PTRACE_SYSCALL
+
+  /* Set ptrace filter options.  */
+  PTRACE_SETOPTIONS = 0x4200,
+#define PT_SETOPTIONS PTRACE_SETOPTIONS
+
+  /* Get last ptrace message.  */
+  PTRACE_GETEVENTMSG = 0x4201,
+#define PT_GETEVENTMSG PT_SETOPTIONS
+
+  /* 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
 };
 
 /* Perform process tracing functions.  REQUEST is one of the values

attachment0 (844 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [patch] linux ptrace updates

Ulrich Drepper
The bounded pointer code isn't used in the moment but maybe it gets
revived in another form.  Applied.

--
➧ Ulrich Drepper ➧ Red Hat, Inc. ➧ 444 Castro St ➧ Mountain View, CA ❖


signature.asc (259 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [patch] linux ptrace updates

Jakub Jelinek
In reply to this post by Mike Frysinger
On Sun, Sep 17, 2006 at 01:04:38AM -0400, Mike Frysinger wrote:
> simple patch to add support for linux ptrace options:
>  - PTRACE_SETOPTIONS
>  - PTRACE_GETEVENTMSG
>  - PTRACE_GETSIGINFO
>  - PTRACE_SETSIGINFO
> -mike

Apparently not that simple, because you missed 4 of the 5 sys/ptrace.h
headers.

        Jakub
Reply | Threaded
Open this post in threaded view
|

Re: [patch] linux ptrace updates

Mike Frysinger
On Monday 18 September 2006 03:54, Jakub Jelinek wrote:
> Apparently not that simple, because you missed 4 of the 5 sys/ptrace.h
> headers.

i didnt touch the arch ones on purpose; i didnt test them ... in the future
i'll be and sure to note such things

also, the ia64 portion you posted is incomplete ... the header already defines
PTRACE_GETSIGINFO and PTRACE_SETSIGINFO to the old values so they'll need to
be removed first
-mike

attachment0 (844 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [patch] linux ptrace updates

Jakub Jelinek
On Mon, Sep 18, 2006 at 04:26:18AM -0400, Mike Frysinger wrote:

> On Monday 18 September 2006 03:54, Jakub Jelinek wrote:
> > Apparently not that simple, because you missed 4 of the 5 sys/ptrace.h
> > headers.
>
> i didnt touch the arch ones on purpose; i didnt test them ... in the future
> i'll be and sure to note such things
>
> also, the ia64 portion you posted is incomplete ... the header already defines
> PTRACE_GETSIGINFO and PTRACE_SETSIGINFO to the old values so they'll need to
> be removed first

Missed that, thanks.  And while fixing that I noticed that the
PT_GETEVENTMSG define was wrong, both in the patch that was checked in
last night and in the patch I sent (as I just copied those chunks from
there).  So here is a newer patch.

2006-09-18  Jakub Jelinek  <[hidden email]>

        * sysdeps/unix/sysv/linux/sys/ptrace.h (PT_GETEVENTMSG): Fix pasto.
        * sysdeps/unix/sysv/linux/s390/sys/ptrace.h (PTRACE_SETOPTIONS,
        PTRACE_GETEVENTMSG, PTRACE_GETSIGINFO, PTRACE_SETSIGINFO): Define.
        * sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h (PTRACE_SETOPTIONS,
        PTRACE_GETEVENTMSG, PTRACE_GETSIGINFO, PTRACE_SETSIGINFO): Likewise.
        * sysdeps/unix/sysv/linux/sparc/sys/ptrace.h (PTRACE_SETOPTIONS,
        PTRACE_GETEVENTMSG, PTRACE_GETSIGINFO, PTRACE_SETSIGINFO): Likewise.
        * sysdeps/unix/sysv/linux/ia64/sys/ptrace.h (PTRACE_SETOPTIONS,
        PTRACE_GETEVENTMSG): Likewise.
        (PTRACE_GETSIGINFO, PTRACE_SETSIGINFO): Change to the arch independent
        values.

--- libc/sysdeps/unix/sysv/linux/sys/ptrace.h.jj 2006-09-18 09:08:49.000000000 +0200
+++ libc/sysdeps/unix/sysv/linux/sys/ptrace.h 2006-09-18 12:17:27.000000000 +0200
@@ -118,7 +118,7 @@ enum __ptrace_request
 
   /* Get last ptrace message.  */
   PTRACE_GETEVENTMSG = 0x4201,
-#define PT_GETEVENTMSG PT_SETOPTIONS
+#define PT_GETEVENTMSG PTRACE_GETEVENTMSG
 
   /* Get siginfo for process.  */
   PTRACE_GETSIGINFO = 0x4202,
--- libc/sysdeps/unix/sysv/linux/s390/sys/ptrace.h.jj 2001-07-06 06:56:20.000000000 +0200
+++ libc/sysdeps/unix/sysv/linux/s390/sys/ptrace.h 2006-09-18 12:18:45.000000000 +0200
@@ -1,5 +1,5 @@
 /* `ptrace' debugger support interface.  Linux version.
-   Copyright (C) 2000 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2006 Free Software Foundation, Inc.
    Contributed by Denis Joseph Barrow ([hidden email]).
    This file is part of the GNU C Library.
 
@@ -118,8 +118,24 @@ enum __ptrace_request
 #define PT_DETACH PTRACE_DETACH
 
   /* Continue and stop at the next (return from) syscall.  */
-  PTRACE_SYSCALL = 24
+  PTRACE_SYSCALL = 24,
 #define PT_SYSCALL PTRACE_SYSCALL
+
+  /* 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
 };
 
 /* Perform process tracing functions.  REQUEST is one of the values
--- libc/sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h.jj 2001-07-06 06:56:19.000000000 +0200
+++ libc/sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h 2006-09-18 12:18:19.000000000 +0200
@@ -1,5 +1,5 @@
 /* `ptrace' debugger support interface.  Linux version.
-   Copyright (C) 2001 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2006 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
@@ -79,8 +79,24 @@ enum __ptrace_request
 #define PT_DETACH PTRACE_DETACH
 
   /* Continue and stop at the next (return from) syscall.  */
-  PTRACE_SYSCALL = 24
+  PTRACE_SYSCALL = 24,
 #define PT_SYSCALL PTRACE_SYSCALL
+
+  /* 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
 };
 
 /* Perform process tracing functions.  REQUEST is one of the values
--- libc/sysdeps/unix/sysv/linux/sparc/sys/ptrace.h.jj 2001-07-06 06:56:21.000000000 +0200
+++ libc/sysdeps/unix/sysv/linux/sparc/sys/ptrace.h 2006-09-18 12:18:31.000000000 +0200
@@ -1,5 +1,6 @@
 /* `ptrace' debugger support interface.  Linux/SPARC version.
-   Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2006
+   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
@@ -148,12 +149,11 @@ enum __ptrace_request
 #endif
 
   /* Continue and stop at the next (return from) syscall.  */
-  PTRACE_SYSCALL = 24
+  PTRACE_SYSCALL = 24,
 #define PTRACE_SYSCALL PTRACE_SYSCALL
 
 #if __WORDSIZE == 64
 
-  ,
   /* Get all floating point registers used by a processes.
      This is not supported on all machines.  */
    PTRACE_GETFPREGS = 25,
@@ -161,10 +161,26 @@ enum __ptrace_request
 
   /* Set all floating point registers used by a processes.
      This is not supported on all machines.  */
-   PTRACE_SETFPREGS = 26
+   PTRACE_SETFPREGS = 26,
 #define PT_SETFPREGS PTRACE_SETFPREGS
 
 #endif
+
+  /* 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
 };
 
 /* Perform process tracing functions.  REQUEST is one of the values
--- libc/sysdeps/unix/sysv/linux/ia64/sys/ptrace.h.jj 2003-11-29 10:20:18.000000000 +0100
+++ libc/sysdeps/unix/sysv/linux/ia64/sys/ptrace.h 2006-09-18 12:18:02.000000000 +0200
@@ -1,5 +1,5 @@
 /* `ptrace' debugger support interface.  Linux/ia64 version.
-   Copyright (C) 2001 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2006 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
@@ -75,14 +75,6 @@ enum __ptrace_request
   PTRACE_SINGLEBLOCK = 12,
 #define PT_STEPBLOCK PTRACE_SINGLEBLOCK
 
-  /* Get siginfo for process.  */
-  PTRACE_GETSIGINFO = 13,
-#define PT_GETSIGINFO PTRACE_GETSIGINFO
-
-  /* Set new siginfo for process.  */
-  PTRACE_SETSIGINFO = 14,
-#define PT_GETSIGINFO PTRACE_GETSIGINFO
-
   /* Attach to a process that is already running. */
   PTRACE_ATTACH = 16,
 #define PT_ATTACH PTRACE_ATTACH
@@ -100,8 +92,24 @@ enum __ptrace_request
 #define PT_SETREGS PTRACE_SETREGS
 
   /* Continue and stop at the next (return from) syscall.  */
-  PTRACE_SYSCALL = 24
+  PTRACE_SYSCALL = 24,
 #define PT_SYSCALL PTRACE_SYSCALL
+
+  /* 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
 };
 
 /* pt_all_user_regs is used for PTRACE_GETREGS/PTRACE_SETREGS.  */
--- libc/ChangeLog.jj 2006-09-18 09:08:37.000000000 +0200
+++ libc/ChangeLog 2006-09-18 09:51:48.000000000 +0200
@@ -1,9 +1,9 @@
 2006-09-17  Mike Frysinger  <[hidden email]>
 
- * sysdeps/unix/sysv/linux/sys/ptrace.h [PTRACE_SETOPTIONS,
- PTRACE_GETEVENTMSG, PTRACE_GETSIGINFO, PTRACE_SETSIGINFO]: Define.
- * sysdeps/unix/sysv/linux/ptrace.c [PTRACE_SETOPTIONS,
- PTRACE_GETEVENTMSG, PTRACE_GETSIGINFO, PTRACE_SETSIGINFO]: Check.
+ * sysdeps/unix/sysv/linux/sys/ptrace.h (PTRACE_SETOPTIONS,
+ PTRACE_GETEVENTMSG, PTRACE_GETSIGINFO, PTRACE_SETSIGINFO): Define.
+ * sysdeps/unix/sysv/linux/ptrace.c (ptrace): Check PTRACE_SETOPTIONS,
+ PTRACE_GETEVENTMSG, PTRACE_GETSIGINFO and PTRACE_SETSIGINFO.
 
 2006-09-16  Jakub Jelinek  <[hidden email]>
 


        Jakub
Reply | Threaded
Open this post in threaded view
|

Re: [patch] linux ptrace updates

Ulrich Drepper
Applied.

--
➧ Ulrich Drepper ➧ Red Hat, Inc. ➧ 444 Castro St ➧ Mountain View, CA ❖


signature.asc (259 bytes) Download Attachment