add function types to arm crt assembly
authorRich Felker <dalias@aerifal.cx>
Thu, 15 Aug 2013 18:52:27 +0000 (14:52 -0400)
committerRich Felker <dalias@aerifal.cx>
Thu, 15 Aug 2013 18:52:27 +0000 (14:52 -0400)
without these, calls may be resolved incorrectly if the calling code
has been compiled to thumb instead of arm. it's not clear to me at
this point whether crt_arch.h is even working if crt1.c is built as
thumb; this needs testing. but the _init and _fini issues were known
to cause crashes in static-linked apps when libc was built as thumb,
and this commit should fix that issue.

arch/arm/crt_arch.h
crt/arm/crt1.s
crt/arm/crti.s

index 979fb08..bed99c2 100644 (file)
@@ -1,5 +1,6 @@
 __asm__("\
 .global _start \n\
+.type _start,%function \n\
 _start: \n\
        mov fp, #0 \n\
        mov lr, #0 \n\
index ed2a57a..90ef59f 100644 (file)
@@ -1,6 +1,7 @@
 .weak _init
 .weak _fini
 .global _start
+.type _start,%function
 _start:
        mov fp,#0
        mov lr,#0
index 0d479cd..1ba165c 100644 (file)
@@ -1,9 +1,11 @@
 .section .init
 .global _init
+.type _init,%function
 _init:
        push {r0,lr}
 
 .section .fini
 .global _fini
+.type _fini,%function
 _fini:
        push {r0,lr}