add support for ctors/dtors on arm with modern gcc
[musl] / crt / arm / crtn.s
1 .weak __init_array_start
2 .weak __init_array_end
3
4 .section .init
5         adr lr, 1f
6         ldr r4, 2f
7         ldr r5, 2f+4
8         add r4, r4, lr
9         add r5, r5, lr
10 1:      adr lr, 1b
11         cmp r4, r5
12         beq 3f
13         ldmia r4!, {r3}
14         ldm sp, {r0,r1,r2}
15         tst r3,#1
16         moveq pc,r3
17         bx r3
18 3:      pop {r0,r1,r2,r4,r5,lr}
19         tst lr,#1
20         moveq pc,lr
21         bx lr
22 2:      .word __init_array_start-1b
23         .word __init_array_end-1b
24
25 .section .fini
26         pop {r4,r5,r6,lr}
27         tst lr,#1
28         moveq pc,lr
29         bx lr