summaryrefslogtreecommitdiff
path: root/libc/Makefile
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2003-02-05 07:45:35 (GMT)
committerEric Andersen <andersen@codepoet.org>2003-02-05 07:45:35 (GMT)
commit33fd05be5614bde6bd96c0d6a7020a2bca376487 (patch)
treeea0acfa0a6a4803ea5f16284a6a8a6d251c8c67d /libc/Makefile
parent8921da1c9b239e717a3b63f59ac3092d79544012 (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/Makefile')
-rw-r--r--libc/Makefile27
1 files changed, 17 insertions, 10 deletions
diff --git a/libc/Makefile b/libc/Makefile
index 04f8e67..a9a7e32 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