Skip to content

Commit

Permalink
Fix text relocation on ppc32.
Browse files Browse the repository at this point in the history
The ____longjmp_chk implementation didn't load from memory the
right way.
  • Loading branch information
Andreas Schwab authored and Ulrich Drepper committed Jun 25, 2009
1 parent 3f241d7 commit 80a9896
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 2 deletions.
5 changes: 5 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -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>

* sysdeps/powerpc/powerpc32/power4/fpu/w_sqrtf.S: Fix cfa offset
Expand Down
23 changes: 21 additions & 2 deletions sysdeps/powerpc/powerpc32/____longjmp_chk.S
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,30 @@

#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) \
cmplw reg, r1; \
bge+ .Lok; \
lis r3,.LC0@ha; \
la r3,.LC0@l(r3); \
LOAD_ARG; \
bl HIDDEN_JUMPTARGET (__fortify_fail); \
.Lok:

Expand Down

0 comments on commit 80a9896

Please sign in to comment.