summaryrefslogtreecommitdiff
path: root/src/ldso/arm
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-05-27 14:49:55 -0400
committerRich Felker <dalias@aerifal.cx>2012-05-27 14:49:55 -0400
commitb94608ca10051e7911250aaa53f1435b0512018c (patch)
treefdd14adf3025dbd0929551706f3ed516bee85515 /src/ldso/arm
parent054ba185999d29f6ae9a8e19549da95f783655b6 (diff)
downloadmusl-b94608ca10051e7911250aaa53f1435b0512018c.tar.gz
cleanup dynamic linker start code cruft
two actual issues: one is that __dynlink no longer wants/needs a GOT pointer argument, so the code to generate that argument can be removed. the other issue was that in the i386 code, argc/argv were being loaded into registers that would be call-clobbered, then copied to preserved registers, rather than just being loaded into the proper call-preserved registers to begin with. this cleanup is in preparation for adding new dynamic linker functionality (ability to explicitly invoke the dynamic linker to run a program).
Diffstat (limited to 'src/ldso/arm')
-rw-r--r--src/ldso/arm/start.s5
1 files changed, 1 insertions, 4 deletions
diff --git a/src/ldso/arm/start.s b/src/ldso/arm/start.s
index 359711e1..25675782 100644
--- a/src/ldso/arm/start.s
+++ b/src/ldso/arm/start.s
@@ -3,12 +3,9 @@
_start:
ldr r0,[sp]
add r1,sp,#4
- ldr r2,2f
- add r2,pc,r2
-1: bl __dynlink
+ bl __dynlink
mov r1,r0
mov r0,#0
tst r1,#1
moveq pc,r1
bx r1
-2: .word _GLOBAL_OFFSET_TABLE_ - 1b - 4