[uClibc] Re: some patches/cleanups

Peter S. Mazinger ps.m at gmx.net
Wed Sep 1 00:44:35 UTC 2004


Hello!

The crt issue is solved, so that the utilities are built against the 
newly created crt-files.
The patch applies after the pie and iconv patches sent earlier.

Peter

-- 
Peter S. Mazinger <ps dot m at gmx dot net>           ID: 0xA5F059F2
Key fingerprint = 92A4 31E1 56BC 3D5A 2D08  BB6E C389 975E A5F0 59F2

____________________________________________________________________
Miert fizetsz az internetert? Korlatlan, ingyenes internet hozzaferes a FreeStarttol.
Probald ki most! http://www.freestart.hu
-------------- next part --------------
--- ./utils/Makefile.crt~	Wed Sep  1 02:10:20 2004
+++ ./utils/Makefile	Wed Sep  1 02:13:54 2004
@@ -39,9 +39,41 @@
 endif
 
 ifeq ($(strip $(UCLIBC_PIE_SUPPORT)),y)
-XXFLAGS+= $(PIEFLAG) $(LDPIEFLAG)
+XXFLAGS+= $(PIEFLAG)
 endif
 
+ifeq ($(strip $(UCLIBC_CTOR_DTOR)),y)
+CRT_FILE     = $(TOPDIR)lib/crt1.o
+else
+CRT_FILE     = $(TOPDIR)lib/crt0.o
+endif
+BEGIN_FILE   = $(LIBGCC_DIR)crtbegin.o
+END_FILE     = $(LIBGCC_DIR)crtend.o
+
+# for ldconfig (static linking) we need some more tweaking
+# arm and ia64 does not use crtbeginT.o for static
+ifeq ($(strip $(TARGET_arm)),y)
+STATIC_BEGIN_FILE   = $(LIBGCC_DIR)crtbegin.o
+else
+STATIC_BEGIN_FILE   = $(LIBGCC_DIR)crtbeginT.o
+endif
+
+# used for PIE
+S_CRT_FILE     = $(TOPDIR)lib/Scrt1.o
+S_BEGIN_FILE   = $(LIBGCC_DIR)crtbeginS.o
+S_END_FILE     = $(LIBGCC_DIR)crtendS.o
+
+ifeq ($(strip $(UCLIBC_PIE_SUPPORT)),y)
+START_FILES = $(S_CRT_FILE) $(TOPDIR)lib/crti.o $(S_BEGIN_FILE)
+END_FILES = $(S_END_FILE) $(TOPDIR)lib/crtn.o
+else
+START_FILES = $(CRT_FILE) $(TOPDIR)lib/crti.o $(BEGIN_FILE)
+END_FILES = $(END_FILE) $(TOPDIR)lib/crtn.o
+endif
+
+STATIC_START_FILES = $(CRT_FILE) $(TOPDIR)lib/crti.o $(STATIC_BEGIN_FILE)
+STATIC_END_FILES = $(END_FILE) $(TOPDIR)lib/crtn.o
+
 ifeq ($(strip $(HAVE_SHARED)),y)
 all:	$(TARGETS) $(TARGET_ICONV)
 else
@@ -52,26 +84,31 @@
 	@$(LN) -fs $(TOPDIR)include/elf.h
 
 readelf: readelf.c
-	$(CC) $(CFLAGS) -Wl,-s $^ -o $@ $(LDADD_LIBFLOAT) -L../lib
+	$(CC) $(CFLAGS) $(XXFLAGS) $(LDPIEFLAG) -Wl,-s \
+		-nostdlib -o $@ $(START_FILES) $^ $(LDADD_LIBFLOAT) -L../lib \
+		-lc $(LIBGCC) $(END_FILES)
 	$(STRIPTOOL) -x -R .note -R .comment $@
 
 ldconfig:	ldconfig.c readsoname.c
 	$(CC) $(CFLAGS) $(XXFLAGS) -Wl,-s -static \
 		-DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" \
 		-DUCLIBC_LDSO=$(UCLIBC_LDSO) -I. -I../ldso/include \
-		$^ -o $@ $(LDADD_LIBFLOAT) -L../lib
+		-nostdlib -o $@ $(STATIC_START_FILES) $^ $(LDADD_LIBFLOAT) -L../lib \
+		-lc $(LIBGCC) $(STATIC_END_FILES)
 	$(STRIPTOOL) -x -R .note -R .comment $@
 
 ldd:	ldd.c
-	$(CC) $(CFLAGS) $(XXFLAGS) -Wl,-s \
+	$(CC) $(CFLAGS) $(XXFLAGS) $(LDPIEFLAG) -Wl,-s \
 		-DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" \
 		-DUCLIBC_LDSO=$(UCLIBC_LDSO) \
-		$^ -o $@ $(LDADD_LIBFLOAT) -L../lib
+		-nostdlib -o $@ $(START_FILES) $^ $(LDADD_LIBFLOAT) -L../lib \
+		-lc $(LIBGCC) $(END_FILES)
 	$(STRIPTOOL) -x -R .note -R .comment $@
 
 iconv: ../libc/misc/wchar/wchar.c
-	$(CC) $(CFLAGS) $(XXFLAGS) -DL_iconv_main ../libc/misc/wchar/wchar.c -o $@ \
-		$(LDADD_LIBFLOAT) -L../lib
+	$(CC) $(CFLAGS) $(XXFLAGS) $(LDPIEFLAG) -Wl,-s -DL_iconv_main \
+		-nostdlib -o $@ $(START_FILES) $^ $(LDADD_LIBFLOAT) -L../lib \
+		-lc $(LIBGCC) $(END_FILES)
 	$(STRIPTOOL) -x -R .note -R .comment $@
 
 hostutils: ldd.host ldconfig.host readelf.host
--- ./Rules.mak.crt~	Wed Sep  1 02:10:20 2004
+++ ./Rules.mak	Wed Sep  1 02:10:20 2004
@@ -91,7 +91,7 @@
 PICFLAG:=-fPIC
 PIEFLAG:=$(call check_gcc,-fPIE,)
 ifeq ($(strip $(PIEFLAG)),-fPIE)
-LDPIEFLAG:=-pie
+LDPIEFLAG:=-Wl,-pie
 endif
 
 # Some nice CPU specific optimizations


More information about the uClibc mailing list