+2013-05-31 Joseph Myers <joseph@codesourcery.com>
+
+ * 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 on $(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.
+
2013-05-30 Patsy Franklin <pfrankli@redhat.com>
[BZ # 15553]
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 \
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) \
# 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) \
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) \
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
\f
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
-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)
$(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
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
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
+2013-05-31 Joseph Myers <joseph@codesourcery.com>
+
+ * Makefile ($(objpfx)libcidn.so): Remove dependencies on libc.
+
2013-05-16 Ryan S. Arnold <rsa@linux.vnet.ibm.com>
* idna.c: Add missing #include <stdint.h> due to uint64_t or uint32_t
libcidn-inhibit-o = $(filter-out .os,$(object-suffixes))
include $(..)Rules
-
-$(objpfx)libcidn.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a
$(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
$(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
# 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
$(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
$(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 to link objects using deprecated
+# RPC interfaces with the version of libc.so that makes them available
+# for new links:
+$(services:%=$(objpfx)libnss_%.so) $(objpfx)libnsl.so: \
+ libc-for-link = $(libnsl-libc)
ifeq ($(build-shared),yes)
+2013-05-31 Joseph Myers <joseph@codesourcery.com>
+
+ * Makefile ($(objpfx)libpthread.so): Remove dependencies on libc
+ and ld.so.
+
2013-05-16 Ryan S. Arnold <rsa@linux.vnet.ibm.com>
* pthread_create.c: Add missing #include <stdint.h> due to uint64_t or
$(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), \
+2013-05-31 Joseph Myers <joseph@codesourcery.com>
+
+ * Makefile ($(objpfx)libthread_db.so): Remove dependencies on
+ libc.
+
2013-05-16 Ryan S. Arnold <rsa@linux.vnet.ibm.com>
* db_info.c: Add missing #include <stdint.h> due to uint64_t or
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
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 to link objects using deprecated
+# RPC interfaces with the version of libc.so that makes them available
+# for new links:
+$(services:%=$(objpfx)libnss_%.so): libc-for-link = $(libnss-libc)
$(objpfx)libnss_db.so: $(objpfx)libnss_files.so
$(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
+2013-05-31 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.
+
2013-05-29 Siddhesh Poyarekar <siddhesh@redhat.com>
[BZ #15465]
+2013-05-31 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.
+
2013-05-29 Siddhesh Poyarekar <siddhesh@redhat.com>
[BZ #15465]
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
ifeq ($(subdir),debug)
CFLAGS-backtrace.c += -funwind-tables
endif
-
-ifeq ($(subdir),math)
-$(objpfx)libm.so: $(elfobjdir)/ld.so
-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
# 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)
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)
$(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
+++ /dev/null
-ifeq ($(subdir),math)
-$(objpfx)libm.so: $(elfobjdir)/ld.so
-endif
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)