From 33fd05be5614bde6bd96c0d6a7020a2bca376487 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Wed, 5 Feb 2003 07:45:35 +0000 Subject: Patch from Stefan Allius to make adding libgcc functions to the library an option, to avoid the possibility of adding non PIC code into the shared PIC uClibc library, thereby making the .text segment unshareable. --- libc/Makefile | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) (limited to 'libc/Makefile') diff --git a/libc/Makefile b/libc/Makefile index 04f8e674e..a9a7e3244 100644 --- a/libc/Makefile +++ b/libc/Makefile @@ -36,6 +36,12 @@ else CRTOBJS="../../lib/crt0.o" endif +ifeq ($(strip $(ADD_LIBGCC_FUNCTIONS)),y) +LIBGCC_NEED=./tmp/libgcc-need.a +else +LIBGCC= +endif + DIRS = misc pwd_grp stdio string termios inet signal stdlib sysdeps unistd # Check if the target architecture has a version script for @@ -54,17 +60,11 @@ ar-target: $(LIBNAME): subdirs ar-target -shared: $(TOPDIR)lib/$(LIBNAME) - @rm -rf tmp - @mkdir tmp - $(AR) rv ./tmp/libgcc-need.a - @(cd tmp && CC=$(CC) LD=$(LD) LDFLAGS=$(CPU_LDFLAGS-y) NM=$(NM) AR=$(AR) \ - LIBGCC=$(LIBGCC) CRTOBJS=$(CRTOBJS) \ - /bin/sh $(TOPDIR)../extra/scripts/get-needed-libgcc-objects.sh) +shared: $(TOPDIR)lib/$(LIBNAME) $(LIBGCC_NEED) $(LD) $(LDFLAGS) $(VERSION_SCRIPT) -soname=$(SHARED_MAJORNAME) -o $(SHARED_FULLNAME) \ - --whole-archive ./tmp/libgcc-need.a $(LIBNAME) --no-whole-archive \ - -init __uClibc_init $(TOPDIR)/libc/misc/internals/interp.o \ - $(LIBGCC) + --whole-archive $(LIBGCC_NEED) $(LIBNAME) \ + $(TOPDIR)/libc/misc/internals/interp.o --no-whole-archive \ + -init __uClibc_init $(LIBGCC) @true #rm -rf tmp install -d $(TOPDIR)lib rm -f $(TOPDIR)lib/$(SHARED_FULLNAME) @@ -72,6 +72,13 @@ shared: $(TOPDIR)lib/$(LIBNAME) (cd ../lib && ln -sf $(SHARED_FULLNAME) libc.so); (cd ../lib && ln -sf $(SHARED_FULLNAME) $(SHARED_MAJORNAME)); +$(LIBGCC_NEED): $(TOPDIR)lib/$(LIBNAME) + @rm -rf tmp + @mkdir tmp + $(AR) rv $@ + @(cd tmp && CC=$(CC) LD=$(LD) LDFLAGS=$(CPU_LDFLAGS-y) NM=$(NM) AR=$(AR) \ + LIBGCC=$(LIBGCC) CRTOBJS=$(CRTOBJS) \ + /bin/sh $(TOPDIR)../extra/scripts/get-needed-libgcc-objects.sh) halfclean: @rm -f $(LIBNAME) uClibc_config.h -- cgit v1.2.3