This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Link extra-libs consistently with libc and ld.so


I haven't seen any comments on the substance of this patch.  Here is a
revised version that deals with ensuring dependencies on libc and
ld.so are present when they are used in linking, sharing the relevant
linker arguments and dependencies with the handling of "modules" (.so
files that aren't built with a SONAME).  Tested x86_64 and x86.

The other two questions from the previous version
<http://sourceware.org/ml/libc-alpha/2013-05/msg00231.html> remain:

* In Makerules I link with ld.so in the form
  $(common-objpfx)elf/ld.so.  Other versions used in removed code
  include $(elf-objpfx)$(rtld-installed-name) and $(elfobjdir)/ld.so.
  Which is the best form to use in glibc makefiles?

* Some libraries need to link with the internal linkobj/libc.so,
  rather than the normal libc.so, because of use of obsolete RPC
  interfaces.  To support this, the rule in Makerules allows
  $($(@F)-libc) to be used instead of the default
  $(common-objpfx)libc.so.  But a previous arrangement where
  dependencies were generated for every library listed in $(services)
  in nis/Makefile and nss/Makefile has been replaced by one where a
  variable for each library is set separately (libnss_nis.so-libc,
  libnss_nisplus.so-libc etc.) - is there a good way, without unduly
  increasing complexity, to set such variables for everything in
  $(services) without the repetition of the list of elements of
  $(services)?

2013-05-14  Joseph Myers  <joseph@codesourcery.com>

	* Makerules (link-libc-args): New variable.
	(link-libc-deps): Likewise.
	(lib%.so): Depend in $(link-libc-deps).  Link with
	$(link-libc-args).
	(build-module): Link with $(link-libc-args).
	(build-module-asneeded): Likewise.
	(build-module-helper-objlist): Filter out $(link-libc-deps) from
	list of objects unless $($(@F)-no-libc-filter).
	(libc.so-no-libc-filter): New variable.
	($(extra-modules-build:%=$(objpfx)%.so)): Depend on
	$(link-libc-deps) instead of libc.so and libc_nonshared.a.
	* crypt/Makefile ($(objpfx)libcrypt.so): Remove dependencies on
	libc.
	* debug/Makefile ($(objpfx)libSegFault.so): Remove dependencies on
	libc and ld.so.
	($(objpfx)libpcprofile.so): Likewise.
	* dlfcn/Makefile (LDLIBS-bug-atexit3-lib.so): Remove ld.so and
	libc_nonshared.a.
	($(objpfx)libdl.so): Remove dependencies on libc and ld.so.
	* hesiod/Makefile ($(objpfx)libnss_hesiod.so): Likewise.
	* locale/Makefile ($(objpfx)libBrokenLocale.so): Likewise.
	* login/Makefile ($(objpfx)libutil.so): Likewise.
	* malloc/Makefile ($(objpfx)libmemusage.so): Likewise.
	* math/Makefile ($(objpfx)libm.so): Likewise.
	* nis/Makefile (libnss_nis.so-libc): New variable.
	(libnss_nisplus.so-libc): Likewise.
	(libnss_compat.so-libc): Likewise.
	(libnsl.so-libc): Likewise.
	($(services:%=$(objpfx)libnss_%.so) $(objpfx)libnsl.so): Remove
	dependencies on libc.
	* nss/Makefile (libnss_files.so-libc): New variable.
	(libnss_db.so-libc): Likewise.
	($(services:%=$(objpfx)libnss_%.so)): Remove dependencies on libc.
	($(objpfx)/libnss_test1.so): Change dependencies on libc to
	$(link-libc-deps).
	* resolv/Makefile ($(objpfx)libresolv.so): Remove dependencies on
	libc.
	[$(have-ssp) = yes] (LDLIBS-resolv.so): Remove variable.
	($(objpfx)libnss_dns.so): Remove dependencies on libc.
	($(objpfx)libanl.so): Likewise.
	* rt/Makefile ($(objpfx)librt.so): Remove dependencies on libc and
	ld.so.
	* stdlib/Makefile ($(objpfx)tst-putenvmod.so): Depend on
	$(link-libc-deps).
	* sysdeps/i386/fpu/Makefile: Remove file.
	* sysdeps/powerpc/fpu/Makefile [$(subdir) = math]
	($(objpfx)libm.so): Remove dependency on ld.so.

libidn/ChangeLog:
2013-05-14  Joseph Myers  <joseph@codesourcery.com>

	* Makefile ($(objpfx)libcidn.so): Remove dependencies on libc.

nptl/ChangeLog:
2013-05-14  Joseph Myers  <joseph@codesourcery.com>

	* Makefile ($(objpfx)libpthread.so): Remove dependencies on libc
	and ld.so.

nptl_db/ChangeLog:
2013-05-14  Joseph Myers  <joseph@codesourcery.com>

	* Makefile ($(objpfx)libthread_db.so): Remove dependencies on
	libc.

ports/ChangeLog.arm:
2013-05-14  Joseph Myers  <joseph@codesourcery.com>

	* sysdeps/arm/Makefile [$(subdir) = malloc]
	($(objpfx)libmemusage.so): Remove dependency on libc_nonshared.
	[$(subdir) = math] ($(objpfx)libm.so): Remove dependency on ld.so.

ports/ChangeLog.microblaze
2013-05-14  Joseph Myers  <joseph@codesourcery.com>

	* sysdeps/microblaze/Makefile ($(objpfx)libm.so): Remove
	dependency on ld.so.
	($(objpfx)libcrypt.so): Likewise.
	($(objpfx)libresolv.so): Likewise.
	($(objpfx)libnss_dns.so): Likewise.
	($(objpfx)libnss_files.so): Likewise.
	($(objpfx)libnss_db.so): Likewise.
	($(objpfx)libnss_nis.so): Likewise.
	($(objpfx)libnss_nisplus.so): Likewise.
	($(objpfx)libnss_hesiod.so): Likewise.
	($(objpfx)libnss_compat.so): Likewise.
	($(objpfx)libanl.so): Likewise.
	($(objpfx)libnsl.so): Likewise.
	($(objpfx)libcidn.so): Likewise.
	($(objpfx)libutil.so): Likewise.

diff --git a/Makerules b/Makerules
index d88bb62..c7a4720 100644
--- a/Makerules
+++ b/Makerules
@@ -432,13 +432,29 @@ map-file = $(firstword $($(@F:.so=-map)) \
 load-map-file = $(map-file:%=-Wl,--version-script=%)
 endif
 
+# Compiler arguments to use to link a shared object with libc and
+# ld.so.  This is intended to be as similar as possible to a default
+# link with an installed libc.
+link-libc-args = -Wl,--start-group \
+		 $(if $($(@F)-libc),$($(@F)-libc),$(common-objpfx)libc.so) \
+		 $(common-objpfx)libc_nonshared.a \
+		 $(as-needed) $(common-objpfx)elf/ld.so $(no-as-needed) \
+		 -Wl,--end-group
+
+# The corresponding dependencies.  As these are used in dependencies,
+# not just commands, they cannot use $(@F) so need to name both
+# possible libc.so objects.
+link-libc-deps = $(common-objpfx)libc.so $(common-objpfx)linkobj/libc.so \
+		 $(common-objpfx)libc_nonshared.a $(common-objpfx)elf/ld.so
+
 # Pattern rule to build a shared object from an archive of PIC objects.
 # This must come after the installation rules so Make doesn't try to
 # build shared libraries in place from the installed *_pic.a files.
 # $(LDLIBS-%.so) may contain -l switches to generate run-time dependencies
-# on other shared objects.
-lib%.so: lib%_pic.a $(+preinit) $(+postinit) $(+interp)
-	$(build-shlib)
+# on other shared objects.  The linking with libc and ld.so is intended
+# to be as similar as possible to a default link with an installed libc.
+lib%.so: lib%_pic.a $(+preinit) $(+postinit) $(+interp) $(link-libc-deps)
+	$(build-shlib) $(link-libc-args)
 
 define build-shlib-helper
 $(LINK.o) -shared $(static-libgcc) -Wl,-O1 $(sysdep-LDFLAGS) \
@@ -513,17 +529,20 @@ endef
 # not for shared objects
 define build-module
 $(build-module-helper) -o $@ $(shlib-lds-flags) \
-	  $(csu-objpfx)abi-note.o $(build-module-objlist)
+	  $(csu-objpfx)abi-note.o $(build-module-objlist) $(link-libc-args)
 endef
 define build-module-asneeded
 $(build-module-helper) -o $@ $(shlib-lds-flags) \
 	  $(csu-objpfx)abi-note.o \
-	  -Wl,--as-needed $(build-module-objlist) -Wl,--no-as-needed
+	  -Wl,--as-needed $(build-module-objlist) -Wl,--no-as-needed \
+	  $(link-libc-args)
 endef
 
 build-module-helper-objlist = \
 	$(patsubst %_pic.a,$(whole-archive) %_pic.a $(no-whole-archive),\
-		   $(filter-out %.lds $(map-file) $(+preinit) $(+postinit),$^))
+		   $(filter-out %.lds $(map-file) $(+preinit) $(+postinit) \
+				$(if $($(@F)-no-libc-filter),,\
+				     $(link-libc-deps)),$^))
 
 build-module-objlist = $(build-module-helper-objlist) $(LDLIBS-$(@F:%.so=%).so)
 build-shlib-objlist = $(build-module-helper-objlist) \
@@ -567,6 +586,7 @@ libc_pic_clean := .clean
 endif
 
 # Use our own special initializer and finalizer files for libc.so.
+libc.so-no-libc-filter = yes
 $(common-objpfx)libc.so: $(elfobjdir)/soinit.os \
 			 $(common-objpfx)libc_pic.os$(libc_pic_clean) \
 			 $(elfobjdir)/sofini.os \
@@ -621,8 +641,7 @@ include $(patsubst %,$(..)extra-modules.mk,$(modules-names))
 
 extra-modules-build := $(filter-out $(modules-names-nobuild),$(modules-names))
 $(extra-modules-build:%=$(objpfx)%.so): $(objpfx)%.so: \
-		$(objpfx)%.os $(shlib-lds) \
-		$(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a
+		$(objpfx)%.os $(shlib-lds) $(link-libs-deps)
 	$(build-module)
 endif
 
diff --git a/crypt/Makefile b/crypt/Makefile
index 0f5f099..238e527 100644
--- a/crypt/Makefile
+++ b/crypt/Makefile
@@ -69,8 +69,3 @@ $(addprefix $(objpfx),$(tests)): $(objpfx)libcrypt.so
 else
 $(addprefix $(objpfx),$(tests)): $(objpfx)libcrypt.a
 endif
-
-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
-# This ensures they will load libc.so for needed symbols if loaded by
-# a statically-linked program that hasn't already loaded it.
-$(objpfx)libcrypt.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a
diff --git a/debug/Makefile b/debug/Makefile
index 9b5afb4..779741f 100644
--- a/debug/Makefile
+++ b/debug/Makefile
@@ -186,13 +186,3 @@ $(objpfx)xtrace: xtrace.sh
 	    -e 's|@PKGVERSION@|$(PKGVERSION)|' \
 	    -e 's|@REPORT_BUGS_TO@|$(REPORT_BUGS_TO)|' $^ > $@.new \
 	&& rm -f $@ && mv $@.new $@ && chmod +x $@
-
-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
-# This ensures they will load libc.so for needed symbols if loaded by
-# a statically-linked program that hasn't already loaded it.
-$(objpfx)libSegFault.so: $(common-objpfx)libc.so \
-			 $(common-objpfx)libc_nonshared.a \
-			 $(elf-objpfx)$(rtld-installed-name)
-$(objpfx)libpcprofile.so: $(common-objpfx)libc.so \
-			  $(common-objpfx)libc_nonshared.a \
-			  $(elf-objpfx)$(rtld-installed-name)
diff --git a/dlfcn/Makefile b/dlfcn/Makefile
index cf4428c..c2ebdca 100644
--- a/dlfcn/Makefile
+++ b/dlfcn/Makefile
@@ -117,14 +117,6 @@ $(objpfx)bug-atexit1.out: $(objpfx)bug-atexit1-lib.so
 $(objpfx)bug-atexit2: $(libdl)
 $(objpfx)bug-atexit2.out: $(objpfx)bug-atexit2-lib.so
 
-LDLIBS-bug-atexit3-lib.so = -lstdc++ -lgcc_eh $(elfobjdir)/ld.so \
-			    $(common-objpfx)libc_nonshared.a
+LDLIBS-bug-atexit3-lib.so = -lstdc++ -lgcc_eh
 $(objpfx)bug-atexit3: $(libdl)
 $(objpfx)bug-atexit3.out: $(objpfx)bug-atexit3-lib.so
-
-
-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
-# This ensures they will load libc.so for needed symbols if loaded by
-# a statically-linked program that hasn't already loaded it.
-$(objpfx)libdl.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a \
-		   $(elfobjdir)/ld.so
diff --git a/hesiod/Makefile b/hesiod/Makefile
index 95ec252..b7a13c2 100644
--- a/hesiod/Makefile
+++ b/hesiod/Makefile
@@ -33,12 +33,7 @@ libnss_hesiod-inhibit-o	= $(filter-out .os,$(object-suffixes))
 
 include ../Rules
 
-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
-# This ensures they will load libc.so for needed symbols if loaded by
-# a statically-linked program that hasn't already loaded it.
-# The Hesiod NSS modules also needs the resolver and some help from
+# The Hesiod NSS module also needs the resolver and some help from
 # the file service.
 $(objpfx)libnss_hesiod.so: $(common-objpfx)resolv/libresolv.so \
-			   $(common-objpfx)nss/libnss_files.so \
-			   $(common-objpfx)libc.so \
-			   $(common-objpfx)libc_nonshared.a
+			   $(common-objpfx)nss/libnss_files.so
diff --git a/libidn/Makefile b/libidn/Makefile
index 1c578c1..de26051 100644
--- a/libidn/Makefile
+++ b/libidn/Makefile
@@ -33,5 +33,3 @@ include $(..)Makeconfig
 libcidn-inhibit-o = $(filter-out .os,$(object-suffixes))
 
 include $(..)Rules
-
-$(objpfx)libcidn.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a
diff --git a/locale/Makefile b/locale/Makefile
index 8bab9a0..8ccc603 100644
--- a/locale/Makefile
+++ b/locale/Makefile
@@ -98,9 +98,3 @@ cpp-srcs-left := $(addsuffix .c,$(localedef-modules) $(localedef-aux) \
 				$(locale-modules) $(lib-modules))
 lib := locale-programs
 include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
-
-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
-# This ensures they will load libc.so for needed symbols if loaded by
-# a statically-linked program that hasn't already loaded it.
-$(objpfx)libBrokenLocale.so: $(common-objpfx)libc.so \
-			     $(common-objpfx)libc_nonshared.a
diff --git a/login/Makefile b/login/Makefile
index 61c9d7e..0bfe643 100644
--- a/login/Makefile
+++ b/login/Makefile
@@ -68,8 +68,3 @@ endif
 $(inst_libexecdir)/pt_chown: $(objpfx)pt_chown $(+force)
 	$(make-target-directory)
 	-$(INSTALL_PROGRAM) -m 4755 -o root $< $@
-
-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
-# This ensures they will load libc.so for needed symbols if loaded by
-# a statically-linked program that hasn't already loaded it.
-$(objpfx)libutil.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a
diff --git a/malloc/Makefile b/malloc/Makefile
index 05f9b15..0fe31a4 100644
--- a/malloc/Makefile
+++ b/malloc/Makefile
@@ -141,7 +141,7 @@ $(objpfx)memusage: memusage.sh
 
 
 # The implementation uses `dlsym'
-$(objpfx)libmemusage.so: $(common-objpfx)dlfcn/libdl.so $(elfobjdir)/ld.so
+$(objpfx)libmemusage.so: $(common-objpfx)dlfcn/libdl.so
 
 # Extra dependencies
 $(foreach o,$(all-object-suffixes),$(objpfx)malloc$(o)): arena.c hooks.c
diff --git a/math/Makefile b/math/Makefile
index 5bbf9d3..3ed78fc 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -229,8 +229,3 @@ gmp-objs = $(patsubst %,$(common-objpfx)stdlib/%.o,\
 $(objpfx)atest-exp: $(gmp-objs)
 $(objpfx)atest-sincos: $(gmp-objs)
 $(objpfx)atest-exp2: $(gmp-objs)
-
-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
-# This ensures they will load libc.so for needed symbols if loaded by
-# a statically-linked program that hasn't already loaded it.
-$(objpfx)libm.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a
diff --git a/nis/Makefile b/nis/Makefile
index 0b3b6a2..45a36c9 100644
--- a/nis/Makefile
+++ b/nis/Makefile
@@ -76,12 +76,11 @@ $(objpfx)libnss_nis.so: $(objpfx)libnsl.so$(libnsl.so-version) \
 			$(common-objpfx)nss/libnss_files.so
 $(objpfx)libnss_nisplus.so: $(objpfx)libnsl.so$(libnsl.so-version)
 
-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
-# This ensures they will load libc.so for needed symbols if loaded by
-# a statically-linked program that hasn't already loaded it.
 libnsl-libc = $(common-objpfx)linkobj/libc.so
-$(services:%=$(objpfx)libnss_%.so) $(objpfx)libnsl.so: $(libnsl-libc) \
-					       $(common-objpfx)libc_nonshared.a
+libnss_nis.so-libc = $(libnsl-libc)
+libnss_nisplus.so-libc = $(libnsl-libc)
+libnss_compat.so-libc = $(libnsl-libc)
+libnsl.so-libc = $(libnsl-libc)
 
 
 ifeq ($(build-shared),yes)
diff --git a/nptl/Makefile b/nptl/Makefile
index 6af4b37..7fa991b 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -507,14 +507,6 @@ $(objpfx)libpthread.so: $(addprefix $(objpfx),$(crti-objs) $(crtn-objs))
 $(objpfx)libpthread.so: +preinit += $(addprefix $(objpfx),$(crti-objs))
 $(objpfx)libpthread.so: +postinit += $(addprefix $(objpfx),$(crtn-objs))
 
-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
-# This ensures they will load libc.so for needed symbols if loaded by
-# a statically-linked program that hasn't already loaded it.
-# Depend on ld.so too to get proper versions of ld.so symbols.
-$(objpfx)libpthread.so: $(common-objpfx)libc.so \
-			$(common-objpfx)libc_nonshared.a \
-			$(elfobjdir)/ld.so
-
 # Make sure we link with the thread library.
 ifeq ($(build-shared),yes)
 $(addprefix $(objpfx), \
diff --git a/nptl_db/Makefile b/nptl_db/Makefile
index 533fbae..77ea46e 100644
--- a/nptl_db/Makefile
+++ b/nptl_db/Makefile
@@ -51,12 +51,6 @@ libthread_db.so-no-z-defs = yes
 
 include ../Rules
 
-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
-# This ensures they will load libc.so for needed symbols if loaded by
-# a statically-linked program that hasn't already loaded it.
-$(objpfx)libthread_db.so: $(common-objpfx)libc.so \
-			  $(common-objpfx)libc_nonshared.a
-
 tests: $(objpfx)db-symbols.out
 $(objpfx)db-symbols.out: $(objpfx)db-symbols.v.i \
 			 $(common-objpfx)nptl/libpthread.so
diff --git a/nss/Makefile b/nss/Makefile
index 449a258..0cd80b1 100644
--- a/nss/Makefile
+++ b/nss/Makefile
@@ -84,12 +84,9 @@ ifeq (yes,$(have-selinux))
 LDLIBS-makedb		:= -lselinux
 endif
 
-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
-# This ensures they will load libc.so for needed symbols if loaded by
-# a statically-linked program that hasn't already loaded it.
 libnss-libc = $(common-objpfx)linkobj/libc.so
-$(services:%=$(objpfx)libnss_%.so): $(libnss-libc) \
-				    $(common-objpfx)libc_nonshared.a
+libnss_files.so-libc = $(libnss-libc)
+libnss_db.so-libc = $(libnss-libc)
 
 $(objpfx)libnss_db.so: $(objpfx)libnss_files.so
 
@@ -107,8 +104,7 @@ $(inst_vardbdir)/Makefile: db-Makefile $(+force)
 	$(do-install)
 
 CFLAGS-nss_test1.c = -DNOT_IN_libc=1
-$(objpfx)/libnss_test1.so: $(objpfx)nss_test1.os $(common-objpfx)libc.so \
-			   $(common-objpfx)libc_nonshared.a
+$(objpfx)/libnss_test1.so: $(objpfx)nss_test1.os $(link-libc-deps)
 	$(build-module)
 ifdef libnss_test1.so-version
 $(objpfx)/libnss_test1.so$(libnss_test1.so-version): $(objpfx)/libnss_test1.so
diff --git a/ports/sysdeps/arm/Makefile b/ports/sysdeps/arm/Makefile
index 3bdb6b3..b218e76 100644
--- a/ports/sysdeps/arm/Makefile
+++ b/ports/sysdeps/arm/Makefile
@@ -25,11 +25,6 @@ sysdep_routines += $(aeabi_constants) $(aeabi_routines)
 static-only-routines += $(aeabi_constants)
 endif
 
-# to pull in __aeabi_read_tp, needed for tls
-ifeq ($(subdir),malloc)
-$(objpfx)libmemusage.so: $(common-objpfx)libc_nonshared.a
-endif
-
 ifeq ($(subdir),gmon)
 sysdep_routines += arm-mcount
 endif
@@ -37,7 +32,3 @@ endif
 ifeq ($(subdir),debug)
 CFLAGS-backtrace.c += -funwind-tables
 endif
-
-ifeq ($(subdir),math)
-$(objpfx)libm.so: $(elfobjdir)/ld.so
-endif
diff --git a/ports/sysdeps/microblaze/Makefile b/ports/sysdeps/microblaze/Makefile
index cc82a74..f7c95ae 100644
--- a/ports/sysdeps/microblaze/Makefile
+++ b/ports/sysdeps/microblaze/Makefile
@@ -9,18 +9,3 @@ endif
 ifeq ($(subdir),resource)
 sysdep_routines += backtrace_linux
 endif
-
-$(objpfx)libm.so: $(elfobjdir)/ld.so
-$(objpfx)libcrypt.so: $(elfobjdir)/ld.so
-$(objpfx)libresolv.so: $(elfobjdir)/ld.so
-$(objpfx)libnss_dns.so: $(elfobjdir)/ld.so
-$(objpfx)libnss_files.so: $(elfobjdir)/ld.so
-$(objpfx)libnss_db.so: $(elfobjdir)/ld.so
-$(objpfx)libnss_nis.so: $(elfobjdir)/ld.so
-$(objpfx)libnss_nisplus.so: $(elfobjdir)/ld.so
-$(objpfx)libnss_hesiod.so: $(elfobjdir)/ld.so
-$(objpfx)libnss_compat.so: $(elfobjdir)/ld.so
-$(objpfx)libanl.so: $(elfobjdir)/ld.so
-$(objpfx)libnsl.so: $(elfobjdir)/ld.so
-$(objpfx)libcidn.so: $(elfobjdir)/ld.so
-$(objpfx)libutil.so: $(elfobjdir)/ld.so
diff --git a/resolv/Makefile b/resolv/Makefile
index d3635bc..51dcf21 100644
--- a/resolv/Makefile
+++ b/resolv/Makefile
@@ -83,23 +83,11 @@ CFLAGS-res_hconf.c = -fexceptions
 # The BIND code elicits some harmless warnings.
 +cflags += -Wno-strict-prototypes -Wno-write-strings
 
-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
-# This ensures they will load libc.so for needed symbols if loaded by
-# a statically-linked program that hasn't already loaded it.
-$(objpfx)libresolv.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a
-# Some hosts need '__stack_chk_guard', so pull in the definition from
-# ld.so if required.
-ifeq (yes,$(have-ssp))
-LDLIBS-resolv.so += $(as-needed) $(elfobjdir)/ld.so $(no-as-needed)
-endif
-
 # The DNS NSS modules needs the resolver.
-$(objpfx)libnss_dns.so: $(objpfx)libresolv.so $(common-objpfx)libc.so \
-			$(common-objpfx)libc_nonshared.a
+$(objpfx)libnss_dns.so: $(objpfx)libresolv.so
 
 # The asynchronous name lookup code needs the thread library.
-$(objpfx)libanl.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a \
-		    $(shared-thread-library)
+$(objpfx)libanl.so: $(shared-thread-library)
 
 $(objpfx)ga_test: $(objpfx)libanl.so $(shared-thread-library)
 
diff --git a/rt/Makefile b/rt/Makefile
index ef356d0..b1392f2 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -64,12 +64,7 @@ CFLAGS-librt-cancellation.c = -fasynchronous-unwind-tables
 
 LDFLAGS-rt.so = -Wl,--enable-new-dtags,-z,nodelete
 
-# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
-# This ensures they will load libc.so for needed symbols if loaded by
-# a statically-linked program that hasn't already loaded it.
-$(objpfx)librt.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a \
-		   $(shared-thread-library) \
-		   $(elfobjdir)/ld.so
+$(objpfx)librt.so: $(shared-thread-library)
 
 ifeq (yes,$(build-shared))
 $(addprefix $(objpfx),$(tests)): $(objpfx)librt.so $(shared-thread-library)
diff --git a/stdlib/Makefile b/stdlib/Makefile
index 27765d1..17d80e0 100644
--- a/stdlib/Makefile
+++ b/stdlib/Makefile
@@ -144,7 +144,7 @@ $(objpfx)tst-fmtmsg.out: tst-fmtmsg.sh $(objpfx)tst-fmtmsg
 $(objpfx)tst-putenv: $(objpfx)tst-putenvmod.so
 LDFLAGS-tst-putenv = $(no-as-needed)
 
-$(objpfx)tst-putenvmod.so: $(objpfx)tst-putenvmod.os
+$(objpfx)tst-putenvmod.so: $(objpfx)tst-putenvmod.os $(link-libc-deps)
 	$(build-module)
 CFLAGS-tst-putenvmod.c = -DNOT_IN_libc=1
 
diff --git a/sysdeps/i386/fpu/Makefile b/sysdeps/i386/fpu/Makefile
deleted file mode 100644
index 1309b64..0000000
--- a/sysdeps/i386/fpu/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-ifeq ($(subdir),math)
-$(objpfx)libm.so: $(elfobjdir)/ld.so
-endif
diff --git a/sysdeps/powerpc/fpu/Makefile b/sysdeps/powerpc/fpu/Makefile
index fda59f9..53470a9 100644
--- a/sysdeps/powerpc/fpu/Makefile
+++ b/sysdeps/powerpc/fpu/Makefile
@@ -1,8 +1,5 @@
 ifeq ($(subdir),math)
 libm-support += fenv_const fe_nomask fe_mask t_sqrt
-
-# libm needs ld.so to access dl_hwcap
-$(objpfx)libm.so: $(elfobjdir)/ld.so
 endif
 
 ifeq ($(subdir),stdlib)

-- 
Joseph S. Myers
joseph@codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]