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.
__asm__("\
.global _start \n\
+.type _start,%function \n\
_start: \n\
mov fp, #0 \n\
mov lr, #0 \n\
.weak _init
.weak _fini
.global _start
+.type _start,%function
_start:
mov fp,#0
mov lr,#0
.section .init
.global _init
+.type _init,%function
_init:
push {r0,lr}
.section .fini
.global _fini
+.type _fini,%function
_fini:
push {r0,lr}