From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30323 invoked by alias); 17 May 2013 23:19:07 -0000 Mailing-List: contact libc-ports-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: libc-ports-owner@sourceware.org Received: (qmail 30305 invoked by uid 89); 17 May 2013 23:19:07 -0000 X-Spam-SWARE-Status: No, score=-4.6 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_THREADED,RCVD_IN_HOSTKARMA_W,RCVD_IN_HOSTKARMA_WL,TW_BJ,TW_HW,TW_LG autolearn=ham version=3.3.1 X-Spam-User: qpsmtpd, 2 recipients Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Fri, 17 May 2013 23:19:04 +0000 Received: from svr-orw-fem-01.mgc.mentorg.com ([147.34.98.93]) by relay1.mentorg.com with esmtp id 1UdTvT-0004dQ-8Y from joseph_myers@mentor.com ; Fri, 17 May 2013 16:19:03 -0700 Received: from SVR-IES-FEM-01.mgc.mentorg.com ([137.202.0.104]) by svr-orw-fem-01.mgc.mentorg.com over TLS secured channel with Microsoft SMTPSVC(6.0.3790.4675); Fri, 17 May 2013 16:19:03 -0700 Received: from digraph.polyomino.org.uk (137.202.0.76) by SVR-IES-FEM-01.mgc.mentorg.com (137.202.0.104) with Microsoft SMTP Server id 14.2.247.3; Sat, 18 May 2013 00:18:59 +0100 Received: from jsm28 (helo=localhost) by digraph.polyomino.org.uk with local-esmtp (Exim 4.76) (envelope-from ) id 1UdTvO-0007BG-GS; Fri, 17 May 2013 23:18:58 +0000 Date: Fri, 17 May 2013 23:19:00 -0000 From: "Joseph S. Myers" To: Roland McGrath CC: , Subject: Re: Link extra-libs consistently with libc and ld.so In-Reply-To: <20130517202428.B17DA2C0BE@topped-with-meat.com> Message-ID: References: <20130517202428.B17DA2C0BE@topped-with-meat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" X-SW-Source: 2013-05/txt/msg00085.txt.bz2 This revised patch uses $(elfobjdir)/ld.so (instead of $(common-objpfx)elf/ld.so) but does not consolidate existing references to various versions of the elf/ directory. It uses target-specific libc-for-link variables to link with linkobj/libc.so, and target-specific link-libc-deps set to empty (for both the main libc.so and linkobj/libc.so) to avoid filtering out ld.so from the libc.so links. It also has changes to iconvdata/extra-module.mk, similar to those to other makefiles, which I'd previously missed. It does not change link-libc-args to use a linker script; the variation of libc-for-link (sometimes using linkobj/libc.so) means that there would probably need to be two such linker scripts, rather than just one, for such an approach to work. Tested with the glibc testsuite for x86_64 and x86, and .so comparisons as previously described in . 2013-05-17 Joseph Myers * Makefile ($(common-objpfx)linkobj/libc.so): Define link-libc-deps to empty as target-specific variable. * Makerules (link-libc-args): New variable. (libc-for-link): Likewise. (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. ($(common-objpfx)libc.so): Define link-libc-deps to empty as target-specific 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. * iconvdata/extra-module.mk ($(objpfx)$(mod).so): Depend on $(link-libc-deps). ($(objpfx)$(mod).so): Remove dependencies on libc and ld.so. * 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 ($(services:%=$(objpfx)libnss_%.so) $(objpfx)libnsl.so): Define libc-for-link as target-specific variable instead of depending directly on libc. * nss/Makefile ($(services:%=$(objpfx)libnss_%.so)): Likewise. ($(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-17 Joseph Myers * Makefile ($(objpfx)libcidn.so): Remove dependencies on libc. nptl/ChangeLog: 2013-05-17 Joseph Myers * Makefile ($(objpfx)libpthread.so): Remove dependencies on libc and ld.so. nptl_db/ChangeLog: 2013-05-17 Joseph Myers * Makefile ($(objpfx)libthread_db.so): Remove dependencies on libc. ports/ChangeLog.arm: 2013-05-17 Joseph Myers * 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-17 Joseph Myers * 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/Makefile b/Makefile index c12e332..7d8eccf 100644 --- a/Makefile +++ b/Makefile @@ -127,6 +127,9 @@ lib: $(common-objpfx)libc.so lib: $(common-objpfx)linkobj/libc.so +# Do not filter ld.so out of libc.so link. +$(common-objpfx)linkobj/libc.so: link-libc-deps = # empty + $(common-objpfx)linkobj/libc.so: $(elfobjdir)/soinit.os \ $(common-objpfx)linkobj/libc_pic.a \ $(elfobjdir)/sofini.os \ diff --git a/Makerules b/Makerules index d88bb62..2c25233 100644 --- a/Makerules +++ b/Makerules @@ -432,13 +432,33 @@ 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 \ + $(libc-for-link) \ + $(common-objpfx)libc_nonshared.a \ + $(as-needed) $(elfobjdir)/ld.so $(no-as-needed) \ + -Wl,--end-group + +# The corresponding shared libc to use. This may be modified for a +# particular target. +libc-for-link = $(common-objpfx)libc.so + +# The corresponding dependencies. As these are used in dependencies, +# not just commands, they cannot use target-specific variables 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 $(elfobjdir)/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 +533,19 @@ 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) \ + $(link-libc-deps),$^)) build-module-objlist = $(build-module-helper-objlist) $(LDLIBS-$(@F:%.so=%).so) build-shlib-objlist = $(build-module-helper-objlist) \ @@ -566,6 +588,9 @@ generated += libc_pic.opts libc_pic.os.clean libc_pic_clean := .clean endif +# Do not filter ld.so out of libc.so link. +$(common-objpfx)libc.so: link-libc-deps = # empty + # Use our own special initializer and finalizer files for libc.so. $(common-objpfx)libc.so: $(elfobjdir)/soinit.os \ $(common-objpfx)libc_pic.os$(libc_pic_clean) \ @@ -621,8 +646,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/iconvdata/extra-module.mk b/iconvdata/extra-module.mk index 43f4e12..ecaf507 100644 --- a/iconvdata/extra-module.mk +++ b/iconvdata/extra-module.mk @@ -4,16 +4,9 @@ extra-modules-left := $(strip $(filter-out $(mod),$(extra-modules-left))) extra-objs := $(extra-objs) $(patsubst %,%.os,$($(mod)-routines)) $(objpfx)$(mod).so: $(addprefix $(objpfx),$(addsuffix .os,$($(mod)-routines)))\ - $(shlib-lds) + $(shlib-lds) $(link-libc-deps) $(build-module-asneeded) -# 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)$(mod).so: $(common-objpfx)libc.so \ - $(common-objpfx)/elf/ld.so \ - $(common-objpfx)libc_nonshared.a - ifneq (,$(extra-modules-left)) include extra-module.mk endif 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..b9b434c 100644 --- a/nis/Makefile +++ b/nis/Makefile @@ -76,12 +76,10 @@ $(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 +# Target-specific variable setting: +$(services:%=$(objpfx)libnss_%.so) $(objpfx)libnsl.so: \ + libc-for-link = $(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..305b63f 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 +# Target-specific variable setting: +$(services:%=$(objpfx)libnss_%.so): libc-for-link = $(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