Browse Source

Hopefully this is correct

Eric Andersen 22 years ago
parent
commit
100cc918a9
2 changed files with 18 additions and 11 deletions
  1. 6 11
      libc/sysdeps/linux/alpha/Makefile
  2. 12 0
      libc/sysdeps/linux/alpha/crt0.S

+ 6 - 11
libc/sysdeps/linux/alpha/Makefile

@@ -1,6 +1,6 @@
 # Makefile for uClibc
 #
-# Copyright (C) 2002 Erik Andersen <andersen@uclibc.org>
+# Copyright (C) 2002-2003 Erik Andersen <andersen@uclibc.org>
 #
 # This program is free software; you can redistribute it and/or modify it under
 # the terms of the GNU Library General Public License as published by the Free
@@ -15,18 +15,13 @@
 # You should have received a copy of the GNU Library General Public License
 # along with this program; if not, write to the Free Software Foundation, Inc.,
 # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-# Derived in part from the Linux-8086 C library, the GNU C Library, and several
-# other sundry sources.  Files within this library are copyright by their
-# respective copyright holders.
 
 TOPDIR=../../../../
 include $(TOPDIR)Rules.mak
 ASFLAGS=$(CFLAGS)
 
-CRT0=crt0.S
-CRT0_OBJ=$(patsubst %.S,%.o, $(CRT0))
-
+CRT0_SRC = crt0.S
+CRT0_OBJ = crt0.o crt1.o
 
 SSRC=__longjmp.S brk.S bsd-_setjmp.S bsd-setjmp.S clone.S \
     setjmp.S divl.S reml.S remq.S divq.S 
@@ -44,10 +39,10 @@ $(LIBC): ar-target
 
 ar-target: $(OBJS) $(CRT0_OBJ)
 	$(AR) $(ARFLAGS) $(LIBC) $(OBJS)
-	cp $(CRT0_OBJ) $(TOPDIR)lib/$(CRT0_OBJ)
+	cp $(CRT0_OBJ) $(TOPDIR)lib/
 
-$(CRT0_OBJ): %.o : %.S
-	$(CC) $(CFLAGS) -c $< -o $@
+$(CRT0_OBJ): $(CRT0_SRC)
+	$(CC) $(CFLAGS) -DL_$* $< -c -o $*.o
 	$(STRIPTOOL) -x -R .note -R .comment $*.o
 
 $(SOBJS): %.o : %.S

+ 12 - 0
libc/sysdeps/linux/alpha/crt0.S

@@ -37,6 +37,18 @@
 	.globl _start
 	.ent _start, 0
 	.type _start,@function
+#if defined L_crt0 || ! defined __UCLIBC_CTOR_DTOR__
+	.type	__uClibc_main,@function
+#else
+	.weak	_init
+	.weak	_fini
+	.type	__uClibc_start_main,@function
+#endif
+/* Stick in a dummy reference to main(), so that if an application
+ * is linking when the main() function is in a static library (.a)
+ * we can be sure that main() actually gets linked in */
+	.type	main,@function
+
 _start:
 	.frame fp, 0, zero
 	mov	zero, fp