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 979fb081572aaa1f532a3c24ebd12e2e57fb47f4..bed99c27e81cfc31319ffd80618d1364e7be0216 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 ed2a57a2dbd55c90fe978753fd95a8c5a0097694..90ef59f3bd8244778a283005d75088e21b5aebf4 100644 (file)
@@ -1,6 +1,7 @@
 .weak _init
 .weak _fini
 .global _start
+.type _start,%function
 _start:
        mov fp,#0
        mov lr,#0
index 0d479cd2cde5da22a255635c919c2cf62c3f73c0..1ba165c5c55a5c9dbe1a3ba94800ceb88d647180 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}