remove init/fini array asm from arm crti/crtn files
authorRich Felker <dalias@aerifal.cx>
Sun, 21 Jul 2013 07:48:35 +0000 (03:48 -0400)
committerRich Felker <dalias@aerifal.cx>
Sun, 21 Jul 2013 07:48:35 +0000 (03:48 -0400)
this code has been replaced by portable C code that works on all
archs. the old asm needs to be removed or ctors/dtors will run twice.

crt/arm/crti.s
crt/arm/crtn.s

index 35ae6ae..0d479cd 100644 (file)
@@ -1,29 +1,9 @@
 .section .init
 .global _init
 _init:
-       push {r0,r1,r2,r4,r5,lr}
-
-.weak __fini_array_start
-.weak __fini_array_end
-.hidden __fini_array_start
-.hidden __fini_array_end
+       push {r0,lr}
 
 .section .fini
 .global _fini
 _fini:
-       push {r4,r5,r6,lr}
-       adr lr, 1f
-       ldr r4, 2f
-       ldr r5, 2f+4
-       add r4, r4, lr
-       add r5, r5, lr
-1:     adr lr, 1b
-       cmp r4, r5
-       beq 3f
-       ldmia r4!, {r3}
-       tst r3,#1
-       moveq pc,r3
-       bx r3
-2:     .word __fini_array_start-1b
-       .word __fini_array_end-1b
-3:     
+       push {r0,lr}
index eb0e883..1b626c0 100644 (file)
@@ -1,31 +1,11 @@
-.weak __init_array_start
-.weak __init_array_end
-.hidden __init_array_start
-.hidden __init_array_end
-
 .section .init
-       adr lr, 1f
-       ldr r4, 2f
-       ldr r5, 2f+4
-       add r4, r4, lr
-       add r5, r5, lr
-1:     adr lr, 1b
-       cmp r4, r5
-       beq 3f
-       ldmia r4!, {r3}
-       ldm sp, {r0,r1,r2}
-       tst r3,#1
-       moveq pc,r3
-       bx r3
-3:     pop {r0,r1,r2,r4,r5,lr}
+       pop {r0,lr}
        tst lr,#1
        moveq pc,lr
        bx lr
-2:     .word __init_array_start-1b
-       .word __init_array_end-1b
 
 .section .fini
-       pop {r4,r5,r6,lr}
+       pop {r0,lr}
        tst lr,#1
        moveq pc,lr
        bx lr