diff options
author | Eric Andersen <andersen@codepoet.org> | 2003-02-05 07:45:35 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2003-02-05 07:45:35 +0000 |
commit | 33fd05be5614bde6bd96c0d6a7020a2bca376487 (patch) | |
tree | ea0acfa0a6a4803ea5f16284a6a8a6d251c8c67d /libc | |
parent | 8921da1c9b239e717a3b63f59ac3092d79544012 (diff) |
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.
Diffstat (limited to 'libc')
-rw-r--r-- | libc/Makefile | 27 |
1 files changed, 17 insertions, 10 deletions
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 |