aarch64: Add setjmp and longjmp SystemTap probes
authorVenkataramanan Kumar <venkataramanan.kumar@linaro.org>
Tue, 8 Apr 2014 13:11:44 +0000 (14:11 +0100)
committerWill Newton <will.newton@linaro.org>
Tue, 22 Apr 2014 10:13:16 +0000 (11:13 +0100)
Add setjmp, longjmp and longjmp_target SystemTap probes.

ChangeLog:

2014-04-22  Will Newton  <will.newton@linaro.org>
    Venkataramanan Kumar  <venkataramanan.kumar@linaro.org>

* sysdeps/aarch64/__longjmp.S: Include stap-probe.h.
(__longjmp): Add longjmp and longjmp_target SystemTap
probes.
* sysdeps/aarch64/setjmp.S: Include stap-probe.h.
(__sigsetjmp): Add setjmp SystemTap probe.

ChangeLog
sysdeps/aarch64/__longjmp.S
sysdeps/aarch64/setjmp.S

index e09fdc6..1d42c68 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2014-04-22  Will Newton  <will.newton@linaro.org>
+           Venkataramanan Kumar  <venkataramanan.kumar@linaro.org>
+
+       * sysdeps/aarch64/__longjmp.S: Include stap-probe.h.
+       (__longjmp): Add longjmp and longjmp_target SystemTap
+       probes.
+       * sysdeps/aarch64/setjmp.S: Include stap-probe.h.
+       (__sigsetjmp): Add setjmp SystemTap probe.
+
 2014-04-17  Carlos O'Donell  <carlos@redhat.com>
 
        * manual/intro.texi (Roadmap to the manual): Sort chapter listing to
index 2d38bbf..1bb7be3 100644 (file)
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <jmpbuf-offsets.h>
+#include <stap-probe.h>
 
 /* __longjmp(jmpbuf, val) */
 
@@ -56,6 +57,10 @@ ENTRY (__longjmp)
 #else
        ldp     x29, x30, [x0, #JB_X29<<3]
 #endif
+       /* longjmp probe takes 3 arguments, address of jump buffer as
+          first argument (8@x0), return value as second argument (-4@x1),
+          and target address (8@x30), respectively.  */
+       LIBC_PROBE (longjmp, 3, 8@x0, -4@x1, 8@x30)
        ldp      d8,  d9, [x0, #JB_D8<<3]
        ldp     d10, d11, [x0, #JB_D10<<3]
        ldp     d12, d13, [x0, #JB_D12<<3]
@@ -98,6 +103,11 @@ ENTRY (__longjmp)
        ldr     x5, [x0, #JB_SP<<3]
 #endif
        mov     sp, x5
+
+       /* longjmp_target probe takes 3 arguments, address of jump buffer
+          as first argument (8@x0), return value as second argument (-4@x1),
+          and target address (8@x30), respectively.  */
+       LIBC_PROBE (longjmp_target, 3, 8@x0, -4@x1, 8@x30)
        cmp     x1, #0
        mov     x0, #1
        csel    x0, x1, x0, ne
index 5822abd..fd39319 100644 (file)
@@ -18,6 +18,7 @@
 
 #include <sysdep.h>
 #include <jmpbuf-offsets.h>
+#include <stap-probe.h>
 
         /* Keep traditional entry points in with sigsetjmp(). */
 ENTRY (setjmp)
@@ -46,6 +47,10 @@ ENTRY (__sigsetjmp)
 #else
        stp     x29, x30, [x0, #JB_X29<<3]
 #endif
+       /* setjmp probe takes 3 arguments, address of jump buffer
+          first argument (8@x0), return value second argument (-4@x1),
+          and target address (8@x30), respectively.  */
+       LIBC_PROBE (setjmp, 3, 8@x0, -4@x1, 8@x30)
        stp      d8,  d9, [x0, #JB_D8<<3]
        stp     d10, d11, [x0, #JB_D10<<3]
        stp     d12, d13, [x0, #JB_D12<<3]