summaryrefslogtreecommitdiff
path: root/sysdeps/powerpc/powerpc64/____longjmp_chk.S
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/powerpc/powerpc64/____longjmp_chk.S')
-rw-r--r--sysdeps/powerpc/powerpc64/____longjmp_chk.S8
1 files changed, 8 insertions, 0 deletions
diff --git a/sysdeps/powerpc/powerpc64/____longjmp_chk.S b/sysdeps/powerpc/powerpc64/____longjmp_chk.S
index 56549021aa..f1b7d85e46 100644
--- a/sysdeps/powerpc/powerpc64/____longjmp_chk.S
+++ b/sysdeps/powerpc/powerpc64/____longjmp_chk.S
@@ -32,8 +32,16 @@
#define CHECK_SP(reg) \
cmpld reg, r1; \
bge+ .Lok; \
+ cfi_remember_state; \
+ mflr r0; \
+ std r0,16(r1); \
+ stdu r1,-112(r1); \
+ cfi_adjust_cfa_offset (112); \
+ cfi_offset (lr, 16); \
ld r3,.LC1@toc(2); \
bl HIDDEN_JUMPTARGET (__fortify_fail); \
+ nop; \
+ cfi_restore_state; \
.Lok:
#include <__longjmp-common.S>