summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2003-01-23 17:33:54 +0000
committerEric Andersen <andersen@codepoet.org>2003-01-23 17:33:54 +0000
commit100cc918a944bd0d40ecb2afc635f2b76d7cb577 (patch)
treef2fc212c79c516ff5273b6e22262d44521c81794
parent1bad089bf9f29240e11216eab1109bd6a7a952fd (diff)
Hopefully this is correct
-rw-r--r--libc/sysdeps/linux/alpha/Makefile17
-rw-r--r--libc/sysdeps/linux/alpha/crt0.S12
2 files changed, 18 insertions, 11 deletions
diff --git a/libc/sysdeps/linux/alpha/Makefile b/libc/sysdeps/linux/alpha/Makefile
index d7f87348c..097b320df 100644
--- a/libc/sysdeps/linux/alpha/Makefile
+++ b/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
diff --git a/libc/sysdeps/linux/alpha/crt0.S b/libc/sysdeps/linux/alpha/crt0.S
index 1f93a4dc4..2e2941042 100644
--- a/libc/sysdeps/linux/alpha/crt0.S
+++ b/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