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]

Re: [PATCH] PowerPC: Add systemtap static probe points in setjmp/longjmp


Ping.

On 21-11-2013 10:20, Adhemerval Zanella wrote:
> Ping.
>
> The probe selection has been fixed upstream in gdb[1]. Ok to apply?
>
> [1] https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=0569175e8e1820bb83569799c8d6dcbdf502c586
>
> On 11-11-2013 15:38, Adhemerval Zanella wrote:
>> Ping.
>>
>> On 31-10-2013 21:42, Adhemerval Zanella wrote:
>>> Hi all,
>>>
>>> This patch add static probes for setjmp/longjmp in the way gdb expects. Along with
>>> another fix (discussed at https://sourceware.org/ml/gdb/2013-10/msg00191.html) this
>>> fixes the gdb.base/longjmp.exp gdb testcases.
>>>
>>> I have to change the symbol_name and use macros to change them to avoid change the
>>> probe names and ending up adding more logic on GCC (since with the expected name
>>> GDB work seamlessly). They symbols name will be the same as before.
>>>
>>> Tested on PPC64, PPC32, and PPC32 soft-fp.
>>>
>>> ---
>>>
>>> 2013-10-31  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
>>>
>>> 	* sysdeps/powerpc/powerpc32/__longjmp-common.S: Add "longjmp" and
>>> 	"longjmp_target" static probes.
>>> 	(__longjmp): Rename to __longjmp_symbol.
>>> 	* sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S: Likewise.
>>> 	* sysdeps/powerpc/powerpc32/__longjmp.S: Define __longjmp_symbol based
>>> 	on which longjmp to generate.
>>> 	* sysdeps/powerpc/powerpc32/fpu/__longjmp.S: Likewise.
>>> 	* sysdeps/powerpc/powerpc32/fpu/setjmp-common.S: Add "setjmp" static
>>> 	probe.
>>> 	(__sigsetjmp): Rename to __sigsetjmp_symbol.
>>> 	(__sigjmp_save): Rename to __sigjmp_save_symbol.
>>> 	* sysdeps/powerpc/powerpc32/setjmp-common.S: Likewise.
>>> 	* sysdeps/powerpc/powerpc32/fpu/setjmp.S: Define __sigsetjmp_symbol
>>> 	and __sigjmp_save_symbol based on which sigsetjmp to generated.
>>> 	* sysdeps/powerpc/powerpc32/setjmp.S: Likewise
>>> 	* sysdeps/unix/sysv/linux/powerpc/powerpc32/____longjmp_chk.S: Define
>>> 	__longjmp_symbol based on which __longjmp to generate.
>>> 	* sysdeps/powerpc/powerpc64/setjmp-common.S: Add "setjmp" static
>>> 	probe.
>>> 	(setjmp): Rename to setjmp_symbol.
>>> 	(__sigsetjmp): Rename to __sigsetjmp_symbol.
>>> 	(_setjmp): Rename to _setjmp_symbol.
>>> 	(__sigsetjmp): Rename to __sigsetjmp_symbol.
>>> 	* sysdeps/powerpc/powerpc64/setjmp.S: Define setjmp_symbol,
>>> 	_setjmp_symbol, __sigsetjmp_symbol, and __sigjmp_save_symbol based on
>>> 	which setjmp to generate.
>>> 	* sysdeps/powerpc/powerpc64/__longjmp-common.S: Add "longjmp" and
>>> 	"longjmp_target" static probes.
>>>
>>> --
>>>
>>> diff --git a/sysdeps/powerpc/powerpc32/__longjmp-common.S b/sysdeps/powerpc/powerpc32/__longjmp-common.S
>>> index df1d519..08eff37 100644
>>> --- a/sysdeps/powerpc/powerpc32/__longjmp-common.S
>>> +++ b/sysdeps/powerpc/powerpc32/__longjmp-common.S
>>> @@ -17,6 +17,7 @@
>>>     <http://www.gnu.org/licenses/>.  */
>>>
>>>  #include <sysdep.h>
>>> +#include <stap-probe.h>
>>>  #define _ASM
>>>  #ifdef __NO_VMX__
>>>  # include <novmxsetjmp.h>
>>> @@ -30,7 +31,7 @@
>>>  # define LOAD_GP(N)	lwz r##N,((JB_GPRS+(N)-14)*4)(r3)
>>>  #endif
>>>
>>> -ENTRY (__longjmp)
>>> +ENTRY (__longjmp_symbol)
>>>
>>>  #if defined PTR_DEMANGLE || defined CHECK_SP
>>>  	lwz r24,(JB_GPR1*4)(r3)
>>> @@ -58,20 +59,22 @@ ENTRY (__longjmp)
>>>  # endif
>>>  	PTR_DEMANGLE2 (r0, r25)
>>>  #endif
>>> +	LIBC_PROBE (longjmp, 3, 4@3, -4@4, 4@0)
>>>  	mtlr r0
>>>  	LOAD_GP (21)
>>>  	LOAD_GP (22)
>>> -	lwz r0,(JB_CR*4)(r3)
>>> +	lwz r5,(JB_CR*4)(r3)
>>>  	LOAD_GP (23)
>>>  	LOAD_GP (24)
>>>  	LOAD_GP (25)
>>> -	mtcrf 0xFF,r0
>>> +	mtcrf 0xFF,r5
>>>  	LOAD_GP (26)
>>>  	LOAD_GP (27)
>>>  	LOAD_GP (28)
>>>  	LOAD_GP (29)
>>>  	LOAD_GP (30)
>>>  	LOAD_GP (31)
>>> +	LIBC_PROBE (longjmp_target, 3, 8@3, -4@4, 8@0)
>>>  	mr r3,r4
>>>  	blr
>>> -END (__longjmp)
>>> +END (__longjmp_symbol)
>>> diff --git a/sysdeps/powerpc/powerpc32/__longjmp.S b/sysdeps/powerpc/powerpc32/__longjmp.S
>>> index 3ceeea7..8456cb5 100644
>>> --- a/sysdeps/powerpc/powerpc32/__longjmp.S
>>> +++ b/sysdeps/powerpc/powerpc32/__longjmp.S
>>> @@ -21,18 +21,19 @@
>>>
>>>  #if defined NOT_IN_libc
>>>  /* Build a non-versioned object for rtld-*.  */
>>> +# define __longjmp_symbol __longjmp
>>>  # include "__longjmp-common.S"
>>>
>>>  #else /* !NOT_IN_libc */
>>>  strong_alias (__vmx__longjmp, __longjmp);
>>> -# define __longjmp  __vmx__longjmp
>>> +# define __longjmp_symbol  __vmx__longjmp
>>>  # include "__longjmp-common.S"
>>>
>>>  # if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
>>>  #  define __NO_VMX__
>>>  #  undef JB_SIZE
>>> -#  undef __longjmp
>>> -#  define __longjmp  __novmx__longjmp
>>> +#  undef __longjmp_symbol
>>> +#  define __longjmp_symbol  __novmx__longjmp
>>>  #  include "__longjmp-common.S"
>>>  # endif
>>>  #endif /* !NOT_IN_libc */
>>> diff --git a/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S b/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S
>>> index d02aa57..4fcaeb9 100644
>>> --- a/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S
>>> +++ b/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S
>>> @@ -17,6 +17,7 @@
>>>     <http://www.gnu.org/licenses/>.  */
>>>
>>>  #include <sysdep.h>
>>> +#include <stap-probe.h>
>>>  #define _ASM
>>>  #ifdef __NO_VMX__
>>>  # include <novmxsetjmp.h>
>>> @@ -25,7 +26,7 @@
>>>  #endif
>>>
>>>  	.machine	"altivec"
>>> -ENTRY (__longjmp)
>>> +ENTRY (__longjmp_symbol)
>>>  #ifndef __NO_VMX__
>>>  # ifdef PIC
>>>  	mflr    r6
>>> @@ -143,19 +144,20 @@ L(no_vmx):
>>>  # endif
>>>  	PTR_DEMANGLE2 (r0, r25)
>>>  #endif
>>> +	LIBC_PROBE (longjmp, 3, 4@3, -4@4, 4@0)
>>>  	mtlr r0
>>>  	lwz r21,((JB_GPRS+7)*4)(r3)
>>>  	lfd fp21,((JB_FPRS+7*2)*4)(r3)
>>>  	lwz r22,((JB_GPRS+8)*4)(r3)
>>>  	lfd fp22,((JB_FPRS+8*2)*4)(r3)
>>> -	lwz r0,(JB_CR*4)(r3)
>>> +	lwz r5,(JB_CR*4)(r3)
>>>  	lwz r23,((JB_GPRS+9)*4)(r3)
>>>  	lfd fp23,((JB_FPRS+9*2)*4)(r3)
>>>  	lwz r24,((JB_GPRS+10)*4)(r3)
>>>  	lfd fp24,((JB_FPRS+10*2)*4)(r3)
>>>  	lwz r25,((JB_GPRS+11)*4)(r3)
>>>  	lfd fp25,((JB_FPRS+11*2)*4)(r3)
>>> -	mtcrf 0xFF,r0
>>> +	mtcrf 0xFF,r5
>>>  	lwz r26,((JB_GPRS+12)*4)(r3)
>>>  	lfd fp26,((JB_FPRS+12*2)*4)(r3)
>>>  	lwz r27,((JB_GPRS+13)*4)(r3)
>>> @@ -168,6 +170,7 @@ L(no_vmx):
>>>  	lfd fp30,((JB_FPRS+16*2)*4)(r3)
>>>  	lwz r31,((JB_GPRS+17)*4)(r3)
>>>  	lfd fp31,((JB_FPRS+17*2)*4)(r3)
>>> +	LIBC_PROBE (longjmp_target, 3, 8@3, -4@4, 8@0)
>>>  	mr r3,r4
>>>  	blr
>>> -END (__longjmp)
>>> +END (__longjmp_symbol)
>>> diff --git a/sysdeps/powerpc/powerpc32/fpu/__longjmp.S b/sysdeps/powerpc/powerpc32/fpu/__longjmp.S
>>> index 27166c4..cbd42be 100644
>>> --- a/sysdeps/powerpc/powerpc32/fpu/__longjmp.S
>>> +++ b/sysdeps/powerpc/powerpc32/fpu/__longjmp.S
>>> @@ -22,20 +22,21 @@
>>>
>>>  #if defined NOT_IN_libc
>>>  /* Build a non-versioned object for rtld-*.  */
>>> +# define __longjmp_symbol __longjmp
>>>  # include "__longjmp-common.S"
>>>
>>>  #else /* !NOT_IN_libc */
>>>  /* Build a versioned object for libc.  */
>>>  versioned_symbol (libc, __vmx__longjmp, __longjmp, GLIBC_2_3_4);
>>> -# define __longjmp  __vmx__longjmp
>>> +# define __longjmp_symbol  __vmx__longjmp
>>>  # include "__longjmp-common.S"
>>>
>>>  # if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
>>>  #  define __NO_VMX__
>>>  #  undef JB_SIZE
>>>  compat_symbol (libc, __novmx__longjmp, __longjmp, GLIBC_2_0);
>>> -#  undef __longjmp
>>> -#  define __longjmp  __novmx__longjmp
>>> +#  undef __longjmp_symbol
>>> +#  define __longjmp_symbol  __novmx__longjmp
>>>  #  include "__longjmp-common.S"
>>>  # endif
>>>  #endif /* !NOT_IN_libc */
>>> diff --git a/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S b/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S
>>> index f324406..35896c9 100644
>>> --- a/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S
>>> +++ b/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S
>>> @@ -17,6 +17,7 @@
>>>     <http://www.gnu.org/licenses/>.  */
>>>
>>>  #include <sysdep.h>
>>> +#include <stap-probe.h>
>>>  #define _ASM
>>>  #ifdef __NO_VMX__
>>>  # include <novmxsetjmp.h>
>>> @@ -25,7 +26,7 @@
>>>  #endif
>>>
>>>  	.machine	"altivec"
>>> -ENTRY (__sigsetjmp)
>>> +ENTRY (__sigsetjmp_symbol)
>>>
>>>  #ifdef PTR_MANGLE
>>>  	mr   r5,r1
>>> @@ -35,6 +36,7 @@ ENTRY (__sigsetjmp)
>>>  	stw  r1,(JB_GPR1*4)(3)
>>>  #endif
>>>  	mflr r0
>>> +	LIBC_PROBE (setjmp, 3, 4@3, -4@4, 4@0)
>>>  	stw  r14,((JB_GPRS+0)*4)(3)
>>>  	stfd fp14,((JB_FPRS+0*2)*4)(3)
>>>  #ifdef PTR_MANGLE
>>> @@ -175,5 +177,5 @@ L(aligned_save_vmx):
>>>  	stvx	31,0,r6
>>>  L(no_vmx):
>>>  #endif
>>> -	b __sigjmp_save@local
>>> -END (__sigsetjmp)
>>> +	b __sigjmp_save_symbol@local
>>> +END (__sigsetjmp_symbol)
>>> diff --git a/sysdeps/powerpc/powerpc32/fpu/setjmp.S b/sysdeps/powerpc/powerpc32/fpu/setjmp.S
>>> index 92acff1..566aa34 100644
>>> --- a/sysdeps/powerpc/powerpc32/fpu/setjmp.S
>>> +++ b/sysdeps/powerpc/powerpc32/fpu/setjmp.S
>>> @@ -22,23 +22,25 @@
>>>
>>>  #if defined NOT_IN_libc
>>>  /* Build a non-versioned object for rtld-*.  */
>>> +# define __sigsetjmp_symbol __sigsetjmp
>>> +# define __sigjmp_save_symbol __sigjmp_save
>>>  # include "setjmp-common.S"
>>>
>>>  #else /* !NOT_IN_libc */
>>>  /* Build a versioned object for libc.  */
>>>  versioned_symbol (libc, __vmx__sigsetjmp, __sigsetjmp, GLIBC_2_3_4)
>>> -# define __sigsetjmp __vmx__sigsetjmp
>>> -# define __sigjmp_save __vmx__sigjmp_save
>>> +# define __sigsetjmp_symbol __vmx__sigsetjmp
>>> +# define __sigjmp_save_symbol __vmx__sigjmp_save
>>>  # include "setjmp-common.S"
>>>
>>>  # if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
>>>  #  define __NO_VMX__
>>> -#  undef __sigsetjmp
>>> -#  undef __sigjmp_save
>>> +#  undef __sigsetjmp_symbol
>>> +#  undef __sigjmp_save_symbol
>>>  #  undef JB_SIZE
>>>  compat_symbol (libc, __novmx__sigsetjmp, __sigsetjmp, GLIBC_2_0)
>>> -#  define __sigsetjmp __novmx__sigsetjmp
>>> -#  define __sigjmp_save __novmx__sigjmp_save
>>> +#  define __sigsetjmp_symbol __novmx__sigsetjmp
>>> +#  define __sigjmp_save_symbol __novmx__sigjmp_save
>>>  #  include "setjmp-common.S"
>>>  # endif
>>>  #endif /* !NOT_IN_libc */
>>> diff --git a/sysdeps/powerpc/powerpc32/setjmp-common.S b/sysdeps/powerpc/powerpc32/setjmp-common.S
>>> index 3fb65b5..446fdff 100644
>>> --- a/sysdeps/powerpc/powerpc32/setjmp-common.S
>>> +++ b/sysdeps/powerpc/powerpc32/setjmp-common.S
>>> @@ -17,6 +17,7 @@
>>>     <http://www.gnu.org/licenses/>.  */
>>>
>>>  #include <sysdep.h>
>>> +#include <stap-probe.h>
>>>  #define _ASM
>>>  #ifdef __NO_VMX__
>>>  # include <novmxsetjmp.h>
>>> @@ -30,7 +31,7 @@
>>>  # define SAVE_GP(N)	stw r##N,((JB_GPRS+(N)-14)*4)(3)
>>>  #endif
>>>
>>> -ENTRY (__sigsetjmp)
>>> +ENTRY (__sigsetjmp_symbol)
>>>
>>>  #ifdef PTR_MANGLE
>>>  	mr   r5,r1
>>> @@ -40,6 +41,7 @@ ENTRY (__sigsetjmp)
>>>  	stw  r1,(JB_GPR1*4)(3)
>>>  #endif
>>>  	mflr r0
>>> +	LIBC_PROBE (setjmp, 3, 4@3, -4@4, 4@0)
>>>  	SAVE_GP (14)
>>>  #ifdef PTR_MANGLE
>>>  	PTR_MANGLE2 (r0, r10)
>>> @@ -69,6 +71,6 @@ ENTRY (__sigsetjmp)
>>>  	li   r3,0
>>>  	blr
>>>  #else
>>> -	b __sigjmp_save@local
>>> +	b __sigjmp_save_symbol@local
>>>  #endif
>>> -END (__sigsetjmp)
>>> +END (__sigsetjmp_symbol)
>>> diff --git a/sysdeps/powerpc/powerpc32/setjmp.S b/sysdeps/powerpc/powerpc32/setjmp.S
>>> index 49b64ec..467d9c9 100644
>>> --- a/sysdeps/powerpc/powerpc32/setjmp.S
>>> +++ b/sysdeps/powerpc/powerpc32/setjmp.S
>>> @@ -21,23 +21,25 @@
>>>
>>>  #if defined NOT_IN_libc
>>>  /* Build a non-versioned object for rtld-*.  */
>>> +# define __sigsetjmp_symbol __sigsetjmp
>>> +# define __sigjmp_save_symbol __sigjmp_save
>>>  # include "setjmp-common.S"
>>>
>>>  #else /* !NOT_IN_libc */
>>>  /* Build a versioned object for libc.  */
>>>  versioned_symbol (libc, __vmx__sigsetjmp, __sigsetjmp, GLIBC_2_3_4)
>>> -# define __sigsetjmp __vmx__sigsetjmp
>>> -# define __sigjmp_save __vmx__sigjmp_save
>>> +# define __sigsetjmp_symbol __vmx__sigsetjmp
>>> +# define __sigjmp_save_symbol __vmx__sigjmp_save
>>>  # include "setjmp-common.S"
>>>
>>>  # if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)
>>>  #  define __NO_VMX__
>>> -#  undef __sigsetjmp
>>> -#  undef __sigjmp_save
>>> +#  undef __sigsetjmp_symbol
>>> +#  undef __sigjmp_save_symbol
>>>  #  undef JB_SIZE
>>>  compat_symbol (libc, __novmx__sigsetjmp, __sigsetjmp, GLIBC_2_0)
>>> -#  define __sigsetjmp __novmx__sigsetjmp
>>> -#  define __sigjmp_save __novmx__sigjmp_save
>>> +#  define __sigsetjmp_symbol __novmx__sigsetjmp
>>> +#  define __sigjmp_save_symbol __novmx__sigjmp_save
>>>  #  include "setjmp-common.S"
>>>  # endif
>>>  #endif /* !NOT_IN_libc */
>>> diff --git a/sysdeps/powerpc/powerpc64/__longjmp-common.S b/sysdeps/powerpc/powerpc64/__longjmp-common.S
>>> index 4f1e3c8..b2ae276 100644
>>> --- a/sysdeps/powerpc/powerpc64/__longjmp-common.S
>>> +++ b/sysdeps/powerpc/powerpc64/__longjmp-common.S
>>> @@ -17,6 +17,7 @@
>>>     <http://www.gnu.org/licenses/>.  */
>>>
>>>  #include <sysdep.h>
>>> +#include <stap-probe.h>
>>>  #define _ASM
>>>  #define _SETJMP_H
>>>  #ifdef __NO_VMX__
>>> @@ -147,20 +148,21 @@ L(no_vmx):
>>>  #ifdef PTR_DEMANGLE
>>>  	PTR_DEMANGLE2 (r0, r25)
>>>  #endif
>>> +	LIBC_PROBE (longjmp, 3, 8@3, -4@4, 8@0)
>>>  	mtlr r0
>>>  /* 	std r2,40(r1)	Restore the TOC save area.  */
>>>  	ld r21,((JB_GPRS+7)*8)(r3)
>>>  	lfd fp21,((JB_FPRS+7)*8)(r3)
>>>  	ld r22,((JB_GPRS+8)*8)(r3)
>>>  	lfd fp22,((JB_FPRS+8)*8)(r3)
>>> -	lwz r0,((JB_CR*8)+4)(r3)	/* 32-bit CR.  */
>>> +	lwz r5,((JB_CR*8)+4)(r3)	/* 32-bit CR.  */
>>>  	ld r23,((JB_GPRS+9)*8)(r3)
>>>  	lfd fp23,((JB_FPRS+9)*8)(r3)
>>>  	ld r24,((JB_GPRS+10)*8)(r3)
>>>  	lfd fp24,((JB_FPRS+10)*8)(r3)
>>>  	ld r25,((JB_GPRS+11)*8)(r3)
>>>  	lfd fp25,((JB_FPRS+11)*8)(r3)
>>> -	mtcrf 0xFF,r0
>>> +	mtcrf 0xFF,r5
>>>  	ld r26,((JB_GPRS+12)*8)(r3)
>>>  	lfd fp26,((JB_FPRS+12)*8)(r3)
>>>  	ld r27,((JB_GPRS+13)*8)(r3)
>>> @@ -173,6 +175,7 @@ L(no_vmx):
>>>  	lfd fp30,((JB_FPRS+16)*8)(r3)
>>>  	ld r31,((JB_GPRS+17)*8)(r3)
>>>  	lfd fp31,((JB_FPRS+17)*8)(r3)
>>> +	LIBC_PROBE (longjmp_target, 3, 8@3, -4@4, 8@0)
>>>  	mr r3,r4
>>>  	blr
>>>  END (__longjmp)
>>> diff --git a/sysdeps/powerpc/powerpc64/setjmp-common.S b/sysdeps/powerpc/powerpc64/setjmp-common.S
>>> index 1829b9a..cf8a7e1 100644
>>> --- a/sysdeps/powerpc/powerpc64/setjmp-common.S
>>> +++ b/sysdeps/powerpc/powerpc64/setjmp-common.S
>>> @@ -17,6 +17,7 @@
>>>     <http://www.gnu.org/licenses/>.  */
>>>
>>>  #include <sysdep.h>
>>> +#include <stap-probe.h>
>>>  #define _ASM
>>>  #ifdef __NO_VMX__
>>>  #include <novmxsetjmp.h>
>>> @@ -42,11 +43,11 @@
>>>  #endif
>>>
>>>  	.machine	"altivec"
>>> -ENTRY (setjmp)
>>> +ENTRY (setjmp_symbol)
>>>  	CALL_MCOUNT 1
>>>  	li r4,1			/* Set second argument to 1.  */
>>> -	b JUMPTARGET (GLUE(__sigsetjmp,_ent))
>>> -END (setjmp)
>>> +	b JUMPTARGET (GLUE(__sigsetjmp_symbol,_ent))
>>> +END (setjmp_symbol)
>>>
>>>  #if defined SHARED && !defined IS_IN_rtld && !defined __NO_VMX__
>>>  /* When called from within libc we need a special version of _setjmp
>>> @@ -60,16 +61,16 @@ END_2 (__GI__setjmp)
>>>  /* Fall thru. */
>>>  #endif
>>>
>>> -ENTRY (_setjmp)
>>> +ENTRY (_setjmp_symbol)
>>>  	CALL_MCOUNT 1
>>>  	li r4,0			/* Set second argument to 0.  */
>>> -	b JUMPTARGET (GLUE(__sigsetjmp,_ent))
>>> -END (_setjmp)
>>> -libc_hidden_def (_setjmp)
>>> +	b JUMPTARGET (GLUE(__sigsetjmp_symbol,_ent))
>>> +END (_setjmp_symbol)
>>> +libc_hidden_def (_setjmp_symbol)
>>>
>>> -ENTRY (__sigsetjmp)
>>> +ENTRY (__sigsetjmp_symbol)
>>>  	CALL_MCOUNT 2
>>> -JUMPTARGET(GLUE(__sigsetjmp,_ent)):
>>> +JUMPTARGET(GLUE(__sigsetjmp_symbol,_ent)):
>>>  #ifdef PTR_MANGLE
>>>  	mr   r5, r1
>>>  	PTR_MANGLE (r5, r6)
>>> @@ -84,6 +85,7 @@ JUMPTARGET(GLUE(__sigsetjmp,_ent)):
>>>  #else
>>>  	std  r2,(JB_GPR2*8)(3)
>>>  #endif
>>> +	LIBC_PROBE (setjmp, 3, 8@3, -4@4, 8@0)
>>>  	std  r14,((JB_GPRS+0)*8)(3)
>>>  	stfd fp14,((JB_FPRS+0)*8)(3)
>>>  #ifdef PTR_MANGLE
>>> @@ -212,18 +214,18 @@ L(no_vmx):
>>>  	li	r3,0
>>>  	blr
>>>  #elif defined SHARED
>>> -	b	JUMPTARGET (__sigjmp_save)
>>> +	b	JUMPTARGET (__sigjmp_save_symbol)
>>>  #else
>>>  	mflr	r0
>>>  	std	r0,16(r1)
>>>  	stdu	r1,-112(r1)
>>>  	cfi_adjust_cfa_offset(112)
>>>  	cfi_offset(lr,16)
>>> -	bl	JUMPTARGET (__sigjmp_save)
>>> +	bl	JUMPTARGET (__sigjmp_save_symbol)
>>>  	nop
>>>  	ld	r0,112+16(r1)
>>>  	addi	r1,r1,112
>>>  	mtlr	r0
>>>  	blr
>>>  #endif
>>> -END (__sigsetjmp)
>>> +END (__sigsetjmp_symbol)
>>> diff --git a/sysdeps/powerpc/powerpc64/setjmp.S b/sysdeps/powerpc/powerpc64/setjmp.S
>>> index 0a3b2fc..5c6baf5 100644
>>> --- a/sysdeps/powerpc/powerpc64/setjmp.S
>>> +++ b/sysdeps/powerpc/powerpc64/setjmp.S
>>> @@ -22,6 +22,10 @@
>>>
>>>  #if defined NOT_IN_libc
>>>  /* Build a non-versioned object for rtld-*.  */
>>> +# define setjmp_symbol setjmp
>>> +# define _setjmp_symbol _setjmp
>>> +# define __sigsetjmp_symbol __sigsetjmp
>>> +# define __sigjmp_save_symbol __sigjmp_save
>>>  # include "setjmp-common.S"
>>>
>>>  #else /* !NOT_IN_libc */
>>> @@ -29,28 +33,28 @@
>>>  versioned_symbol (libc, __vmxsetjmp, setjmp, GLIBC_2_3_4)
>>>  versioned_symbol (libc, __vmx_setjmp, _setjmp, GLIBC_2_3_4)
>>>  versioned_symbol (libc, __vmx__sigsetjmp, __sigsetjmp, GLIBC_2_3_4)
>>> -# define setjmp __vmxsetjmp
>>> -# define _setjmp __vmx_setjmp
>>> -# define __sigsetjmp __vmx__sigsetjmp
>>> -# define __sigjmp_save __vmx__sigjmp_save
>>> +# define setjmp_symbol __vmxsetjmp
>>> +# define _setjmp_symbol __vmx_setjmp
>>> +# define __sigsetjmp_symbol __vmx__sigsetjmp
>>> +# define __sigjmp_save_symbol __vmx__sigjmp_save
>>>  # include "setjmp-common.S"
>>>  strong_alias (__vmxsetjmp, __vmx__setjmp)
>>>  strong_alias (__vmx__sigsetjmp, __setjmp)
>>>
>>>  # if defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)
>>> -#  undef setjmp
>>> -#  undef _setjmp
>>> -#  undef __sigsetjmp
>>> -#  undef __sigjmp_save
>>> +#  undef setjmp_symbol
>>> +#  undef _setjmp_symbol
>>> +#  undef __sigsetjmp_symbol
>>> +#  undef __sigjmp_save_symbol
>>>  #  undef JB_SIZE
>>>  #  define __NO_VMX__
>>>  compat_symbol (libc, __novmxsetjmp, setjmp, GLIBC_2_3)
>>>  compat_symbol (libc, __novmx_setjmp,_setjmp, GLIBC_2_3);
>>>  compat_symbol (libc, __novmx__sigsetjmp,__sigsetjmp, GLIBC_2_3)
>>> -#  define setjmp __novmxsetjmp
>>> -#  define _setjmp __novmx_setjmp
>>> -#  define __sigsetjmp __novmx__sigsetjmp
>>> -#  define __sigjmp_save __novmx__sigjmp_save
>>> +#  define setjmp_symbol __novmxsetjmp
>>> +#  define _setjmp_symbol __novmx_setjmp
>>> +#  define __sigsetjmp_symbol __novmx__sigsetjmp
>>> +#  define __sigjmp_save_symbol __novmx__sigjmp_save
>>>  #  include "setjmp-common.S"
>>>  strong_alias (__novmxsetjmp, __novmx__setjmp)
>>>  # endif
>>> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/____longjmp_chk.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/____longjmp_chk.S
>>> index 978370e..6e88b61 100644
>>> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/____longjmp_chk.S
>>> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/____longjmp_chk.S
>>> @@ -24,7 +24,7 @@
>>>  	.string "longjmp causes uninitialized stack frame"
>>>  	.text
>>>
>>> -#define __longjmp ____longjmp_chk
>>> +#define __longjmp_symbol ____longjmp_chk
>>>
>>>  #ifdef PIC
>>>  #  define LOAD_ARG \
>>>


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