add PIE support for ARM
authorRich Felker <dalias@aerifal.cx>
Wed, 10 Jul 2013 20:58:27 +0000 (16:58 -0400)
committerRich Felker <dalias@aerifal.cx>
Wed, 10 Jul 2013 20:58:27 +0000 (16:58 -0400)
crt/arm/Scrt1.s [new file with mode: 0644]

diff --git a/crt/arm/Scrt1.s b/crt/arm/Scrt1.s
new file mode 100644 (file)
index 0000000..a54859a
--- /dev/null
@@ -0,0 +1,30 @@
+.weak _init
+.weak _fini
+.global _start
+_start:
+       mov fp,#0
+       mov lr,#0
+
+       ldr a2,[sp],#4
+       mov a3,sp
+       str fp,[sp,#-4]!
+       str a1,[sp,#-4]!
+
+       adr ip,2f
+       ldr a4,2f+4
+       add a4,a4,ip
+       str a4,[sp,#-4]!
+       ldr a4,2f+8
+       add a4,a4,ip
+
+       ldr a1,2f
+       add ip,ip,a1
+       ldr a1,2f+12
+       ldr a1,[ip,a1]
+
+       bl __libc_start_main(PLT)
+1:     b 1b
+2:     .word _GLOBAL_OFFSET_TABLE_-2b
+       .word _fini-2b
+       .word _init-2b
+       .word main(GOT)