Fix text relocation on ppc32.
The ____longjmp_chk implementation didn't load from memory the right way.
This commit is contained in:
parent
3f241d7584
commit
80a98966c8
@ -1,3 +1,8 @@
|
|||||||
|
2009-06-25 Andreas Schwab <aschwab@redhat.com>
|
||||||
|
|
||||||
|
* sysdeps/powerpc/powerpc32/____longjmp_chk.S (LOAD_ARG): Define.
|
||||||
|
(CHECK_SP): Use it.
|
||||||
|
|
||||||
2009-06-24 Andreas Schwab <aschwab@redhat.com>
|
2009-06-24 Andreas Schwab <aschwab@redhat.com>
|
||||||
|
|
||||||
* sysdeps/powerpc/powerpc32/power4/fpu/w_sqrtf.S: Fix cfa offset
|
* sysdeps/powerpc/powerpc32/power4/fpu/w_sqrtf.S: Fix cfa offset
|
||||||
|
@ -26,11 +26,30 @@
|
|||||||
|
|
||||||
#define __longjmp ____longjmp_chk
|
#define __longjmp ____longjmp_chk
|
||||||
|
|
||||||
|
#ifdef PIC
|
||||||
|
# ifdef HAVE_ASM_PPC_REL16
|
||||||
|
# define LOAD_ARG \
|
||||||
|
bcl 20,31,1f; \
|
||||||
|
1: mflr r3; \
|
||||||
|
addis r3,r3,_GLOBAL_OFFSET_TABLE_-1b@ha; \
|
||||||
|
addi r3,r3,_GLOBAL_OFFSET_TABLE_-1b@l; \
|
||||||
|
lwz r3,.LC0@got(r3)
|
||||||
|
# else
|
||||||
|
# define LOAD_ARG \
|
||||||
|
bl _GLOBAL_OFFSET_TABLE_-4@local; \
|
||||||
|
mflr r3; \
|
||||||
|
lwz r3,.LC0@got(r3)
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# define LOAD_ARG \
|
||||||
|
lis r3,.LC0@ha; \
|
||||||
|
la r3,.LC0@l(r3)
|
||||||
|
#endif
|
||||||
|
|
||||||
#define CHECK_SP(reg) \
|
#define CHECK_SP(reg) \
|
||||||
cmplw reg, r1; \
|
cmplw reg, r1; \
|
||||||
bge+ .Lok; \
|
bge+ .Lok; \
|
||||||
lis r3,.LC0@ha; \
|
LOAD_ARG; \
|
||||||
la r3,.LC0@l(r3); \
|
|
||||||
bl HIDDEN_JUMPTARGET (__fortify_fail); \
|
bl HIDDEN_JUMPTARGET (__fortify_fail); \
|
||||||
.Lok:
|
.Lok:
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user