summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/powerpc/brk.S
diff options
context:
space:
mode:
authorJoakim Tjernlund <joakim.tjernlund@transmode.se>2007-01-05 10:20:37 +0000
committerJoakim Tjernlund <joakim.tjernlund@transmode.se>2007-01-05 10:20:37 +0000
commite26ed573b62f69d9813e72fda4ee3da6eaf4d7b7 (patch)
treeb089faf7543e285fe7076a6f28f77c32140c9687 /libc/sysdeps/linux/powerpc/brk.S
parent3a3af36f1bef68c9942e9ef3fb83cc15aeabfcc0 (diff)
Support SecurePLTs for PowerPC. You need a toolchain that supports
config option --enable-secureplt. The assembler must also supports R_PPC_REL16* relocations. gcc 4.1.1 and binutils 2.17 is known to do this.
Diffstat (limited to 'libc/sysdeps/linux/powerpc/brk.S')
-rw-r--r--libc/sysdeps/linux/powerpc/brk.S7
1 files changed, 7 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/powerpc/brk.S b/libc/sysdeps/linux/powerpc/brk.S
index 25155ad46..5fe8d4086 100644
--- a/libc/sysdeps/linux/powerpc/brk.S
+++ b/libc/sysdeps/linux/powerpc/brk.S
@@ -50,8 +50,15 @@ brk:
lwz r6,8(r1)
#ifdef __PIC__
mflr r4
+# ifdef HAVE_ASM_PPC_REL16
+ bcl 20,31,1f
+1: mflr r5
+ addis r5,r5,_GLOBAL_OFFSET_TABLE_-1b@ha
+ addi r5,r5,_GLOBAL_OFFSET_TABLE_-1b@l
+# else
bl _GLOBAL_OFFSET_TABLE_@local-4
mflr r5
+# endif
lwz r5,__curbrk@got(r5)
mtlr r4
stw r3,0(r5)