This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] aarch64: Add setjmp and longjmp SystemTap probes


From: Venkataramanan Kumar <venkataramanan.kumar@linaro.org>

Add setjmp, longjmp and longjmp_target Systemtap probes.

ChangeLog:

2014-04-08  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.
---
 sysdeps/aarch64/__longjmp.S | 10 ++++++++++
 sysdeps/aarch64/setjmp.S    |  5 +++++
 2 files changed, 15 insertions(+)

diff --git a/sysdeps/aarch64/__longjmp.S b/sysdeps/aarch64/__longjmp.S
index 2d38bbf..1bb7be36 100644
--- a/sysdeps/aarch64/__longjmp.S
+++ b/sysdeps/aarch64/__longjmp.S
@@ -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
diff --git a/sysdeps/aarch64/setjmp.S b/sysdeps/aarch64/setjmp.S
index 5822abd..fd39319 100644
--- a/sysdeps/aarch64/setjmp.S
+++ b/sysdeps/aarch64/setjmp.S
@@ -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]
-- 
1.8.1.4


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]