Quellcode durchsuchen

Make profiling on arm work

Eric Andersen vor 21 Jahren
Ursprung
Commit
6f2da98c8c
2 geänderte Dateien mit 15 neuen und 2 gelöschten Zeilen
  1. 10 1
      libc/sysdeps/linux/arm/Makefile
  2. 5 1
      libc/sysdeps/linux/arm/crt0.S

+ 10 - 1
libc/sysdeps/linux/arm/Makefile

@@ -21,7 +21,8 @@ include $(TOPDIR)Rules.mak
 ASFLAGS=$(CFLAGS)
 
 CRT0_SRC = crt0.S
-CRT0_OBJ = crt0.o crt1.o
+CRT0_OBJ = crt0.o crt1.o gcrt1.o
+CRT0_DEPS=gmon-start.S
 
 SSRC=__longjmp.S vfork.S clone.S setjmp.S bsd-setjmp.S \
 	bsd-_setjmp.S sigrestorer.S
@@ -53,8 +54,16 @@ $(COBJS): %.o : %.c
 	$(CC) $(CFLAGS) -c $< -o $@
 	$(STRIPTOOL) -x -R .note -R .comment $*.o
 
+ifeq ($(strip $(UCLIBC_PROFILING)),y)
+SAFECFLAGS := $(subst -g,,$(CFLAGS))
+gmon-start.S: ../common/gmon-start.c
+	$(CC) $(SAFECFLAGS) -c $< -S -o $*.S
+gcrt1.o: $(CRT0_DEPS)
+endif
+
 headers:
 
+
 clean:
 	rm -f *.[oa] *~ core
 	rm -f bits/sysnum.h

+ 5 - 1
libc/sysdeps/linux/arm/crt0.S

@@ -92,7 +92,7 @@ _start:
 	ldr r2,[sp, #8]
 #endif
 
-#if defined L_crt1 && defined __UCLIBC_CTOR_DTOR__
+#if (defined L_crt1 || defined L_gcrt1 ) && defined __UCLIBC_CTOR_DTOR__
 	/* Store the address of _init in r3 as an argument to main() */
 	ldr r3, =_init
 
@@ -123,3 +123,7 @@ _start:
 	.long 2,0,0 
 3:	.align 4                 
 
+#if defined L_gcrt1 && defined __UCLIBC_PROFILING__
+# include "./gmon-start.S"
+#endif
+