aarch64: Add setjmp and longjmp SystemTap probes

Message ID 1396962956-28589-1-git-send-email-will.newton@linaro.org
State Accepted
Headers show

Commit Message

Will Newton April 8, 2014, 1:15 p.m.
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(+)

Comments

Will Newton April 17, 2014, 12:18 p.m. | #1
On 8 April 2014 14:15, Will Newton <will.newton@linaro.org> wrote:
> 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(+)

Ping?

> 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
>
Will Newton April 22, 2014, 8:53 a.m. | #2
On 17 April 2014 13:18, Will Newton <will.newton@linaro.org> wrote:
> On 8 April 2014 14:15, Will Newton <will.newton@linaro.org> wrote:
>> 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(+)
>
> Ping?

Ping?

>> 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
>>
>
>
>
> --
> Will Newton
> Toolchain Working Group, Linaro
Marcus Shawcroft April 22, 2014, 9:41 a.m. | #3
On 8 April 2014 14:15, Will Newton <will.newton@linaro.org> wrote:
> 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.


OK /Marcus

Patch

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]