Thu Apr 18 21:07:27 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
authorroland <roland>
Sat, 20 Apr 1996 00:04:28 +0000 (00:04 +0000)
committerroland <roland>
Sat, 20 Apr 1996 00:04:28 +0000 (00:04 +0000)
* Makerules (no-whole-archive): New variable.
(build-shlib): Use it.
* elf/Makefile (libdl.so): Use it.
* configure.in (libc_cv_ld_no_whole_archive): New check for
--no-whole-archive.
* config.make.in (have-no-whole-archive): New variable.

Makerules
config.make.in
configure.in
elf/Makefile

index cb22d03..a163378 100644 (file)
--- a/Makerules
+++ b/Makerules
@@ -569,12 +569,19 @@ ifeq (yes,$(build-shared))
 # on other shared objects.
 lib%.so: lib%_pic.a; $(build-shlib)
 
+ifeq ($(libc_cv_ld_no_whole_archive),yes)
+no-whole-archive = -Wl,--no-whole-archive
+else
+no-whole-archive =
+endif
+
 define build-shlib
 $(LINK.o) -shared -o $@ $(sysdep-LDFLAGS) $(config-LDFLAGS)  \
          -Wl,-soname=lib$(libprefix)$(@F:lib%.so=%).so$($(@F)-version) \
          $(LDFLAGS.so) $(LDFLAGS-$(@F:lib%.so=%).so) \
          -Wl,-rpath-link=$(common-objdir) \
-         -Wl,--whole-archive $^ $(LDLIBS-$(@F:lib%.so=%).so)
+         -Wl,--whole-archive $^ $(no-whole-archive) \
+         $(LDLIBS-$(@F:lib%.so=%).so)
 endef
 
 # Don't try to use -lc when making libc.so itself.
index 5057174..593d9ca 100644 (file)
@@ -17,6 +17,8 @@ config-defines = @DEFS@
 elf = @elf@
 have-initfini = @libc_cv_have_initfini@
 
+have-no-whole-archive = @libc_cv_ld_no_whole_archive@
+
 # Configuration options.
 gnu-as = @gnu_as@
 gnu-ld = @gnu_ld@
index 734c5ad..711635c 100644 (file)
@@ -469,6 +469,19 @@ elif test $libc_cv_asm_weakext_directive = yes; then
   AC_DEFINE(HAVE_ASM_WEAKEXT_DIRECTIVE)
 fi
 
+AC_CACHE_CHECK(for ld --no-whole-archive, libc_cv_ld_no_whole_archive, [dnl
+cat > conftest.c <<\EOF
+main () { exit (0); }
+EOF
+if ${CC-cc} $CFLAGS -Wl,--no-whole-archive \
+           -o conftest conftest.c 2>/dev/null; then
+  libc_cv_ld_no_whole_archive=yes
+else
+  libc_cv_ld_no_whole_archive=no
+fi
+rm -f conftest*])
+AC_SUBST(libc_cv_ld_no_whole_archive)dnl
+
 ### End of automated tests.
 ### Now run sysdeps configure fragments.
 
index a77460d..dfb307b 100644 (file)
@@ -1,6 +1,6 @@
 # Makefile for elf subdirectory of GNU C Library.
 
-# Copyright (C) 1995 Free Software Foundation, Inc.
+# Copyright (C) 1995, 1996 Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
 
 # The GNU C Library is free software; you can redistribute it and/or
@@ -80,7 +80,7 @@ $(objpfx)libdl.so: $(objpfx)libdl_pic.a $(common-objpfx)libc.so $(objpfx)ld.so
        $(patsubst %/,cd %;,$(objpfx)) \
        $(LINK.o) -shared -o $(@:$(objpfx)%=%) \
                  $(LDFLAGS.so) $(LDFLAGS-dl.so) \
-                 -Wl,--whole-archive $(^:$(objpfx)%=%)
+                 -Wl,--whole-archive $(^:$(objpfx)%=%) $(no-whole-archive)
 
 $(slibdir)/$(rtld-installed-name): $(objpfx)ld.so; $(do-install-program)
 $(slibdir)/ld-linux.so.1: $(objpfx)ld-linux.so.1; $(do-install-program)