diff options
| author | Rich Felker <dalias@aerifal.cx> | 2013-07-21 03:48:35 -0400 | 
|---|---|---|
| committer | Rich Felker <dalias@aerifal.cx> | 2013-07-21 03:48:35 -0400 | 
| commit | 976c0fdcb55fafc55682d86441e5293d8aa5259d (patch) | |
| tree | c49aa1da4a8e97524c2996bce8fa90ed07a6f6d9 | |
| parent | 3edfd07073dd145124e15c80ea0276cd52c9909a (diff) | |
| download | musl-976c0fdcb55fafc55682d86441e5293d8aa5259d.tar.gz | |
remove init/fini array asm from arm crti/crtn files
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.
| -rw-r--r-- | crt/arm/crti.s | 24 | ||||
| -rw-r--r-- | crt/arm/crtn.s | 24 | 
2 files changed, 4 insertions, 44 deletions
| diff --git a/crt/arm/crti.s b/crt/arm/crti.s index 35ae6ae6..0d479cd2 100644 --- a/crt/arm/crti.s +++ b/crt/arm/crti.s @@ -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} diff --git a/crt/arm/crtn.s b/crt/arm/crtn.s index eb0e883e..1b626c0a 100644 --- a/crt/arm/crtn.s +++ b/crt/arm/crtn.s @@ -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 | 
