Kaynağa Gözat

add function types to arm crt assembly

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.
Rich Felker 11 yıl önce
ebeveyn
işleme
badaa04acc
3 değiştirilmiş dosya ile 4 ekleme ve 0 silme
  1. 1 0
      arch/arm/crt_arch.h
  2. 1 0
      crt/arm/crt1.s
  3. 2 0
      crt/arm/crti.s

+ 1 - 0
arch/arm/crt_arch.h

@@ -1,5 +1,6 @@
 __asm__("\
 .global _start \n\
+.type _start,%function \n\
 _start: \n\
 	mov fp, #0 \n\
 	mov lr, #0 \n\

+ 1 - 0
crt/arm/crt1.s

@@ -1,6 +1,7 @@
 .weak _init
 .weak _fini
 .global _start
+.type _start,%function
 _start:
 	mov fp,#0
 	mov lr,#0

+ 2 - 0
crt/arm/crti.s

@@ -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}