summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile5
-rwxr-xr-xconfigure10
2 files changed, 13 insertions, 2 deletions
diff --git a/Makefile b/Makefile
index 7c2cd77b..82ea024e 100644
--- a/Makefile
+++ b/Makefile
@@ -25,6 +25,7 @@ REPLACED_OBJS = $(sort $(subst /$(ARCH)/,/,$(ARCH_OBJS)))
LDSO_SRCS = $(sort $(wildcard $(srcdir)/ldso/*.c))
LDSO_OBJS = $(patsubst $(srcdir)/%,obj/%.lo,$(basename $(LDSO_SRCS)))
OBJS = $(addprefix obj/, $(filter-out $(REPLACED_OBJS), $(sort $(BASE_OBJS) $(ARCH_OBJS))))
+AOBJS = $(OBJS)
LOBJS = $(OBJS:.o=.lo)
GENH = obj/include/bits/alltypes.h
GENH_INT = obj/src/internal/version.h
@@ -158,9 +159,9 @@ lib/libc.so: $(LOBJS) $(LDSO_OBJS)
-Wl,-e,_dlstart -Wl,-Bsymbolic-functions \
-o $@ $(LOBJS) $(LDSO_OBJS) $(LIBCC)
-lib/libc.a: $(OBJS)
+lib/libc.a: $(AOBJS)
rm -f $@
- $(AR) rc $@ $(OBJS)
+ $(AR) rc $@ $(AOBJS)
$(RANLIB) $@
$(EMPTY_LIBS):
diff --git a/configure b/configure
index 5b97f719..2d7ea30e 100755
--- a/configure
+++ b/configure
@@ -532,6 +532,15 @@ CFLAGS_AUTO="$CFLAGS_AUTO -include vis.h"
CFLAGS_AUTO="${CFLAGS_AUTO# }"
fi
+# Determine if the compiler produces position-independent code (PIC)
+# by default. If so, we don't need to compile separate object files
+# for libc.a and libc.so.
+if trycppif __PIC__ "$CFLAGS_C99FSE $CPPFLAGS $CFLAGS" ; then
+pic_default=yes
+else
+pic_default=no
+fi
+
# Reduce space lost to padding for alignment purposes by sorting data
# objects according to their alignment reqirements. This approximates
# optimal packing.
@@ -692,6 +701,7 @@ test "x$static" = xno && echo "STATIC_LIBS ="
test "x$shared" = xno && echo "SHARED_LIBS ="
test "x$cc_family" = xgcc && echo 'WRAPCC_GCC = $(CC)'
test "x$cc_family" = xclang && echo 'WRAPCC_CLANG = $(CC)'
+test "x$pic_default" = xyes && echo 'AOBJS = $(LOBJS)'
exec 1>&3 3>&-
test "$srcdir" = "." || ln -sf $srcdir/Makefile .