aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland McGrath <roland@redhat.com>2010-04-19 15:31:43 -0700
committerRoland McGrath <roland@redhat.com>2010-04-19 15:31:43 -0700
commit7e2b0c8562b35155820f87b5ff02a8b6850344cc (patch)
treec54e65138af14a8285202c940b74512d6759a108
parentc98d4212d0d7c9dfc34cf18ea95740370bca5aad (diff)
downloadglibc-7e2b0c8562b35155820f87b5ff02a8b6850344cc.tar
glibc-7e2b0c8562b35155820f87b5ff02a8b6850344cc.tar.gz
glibc-7e2b0c8562b35155820f87b5ff02a8b6850344cc.tar.bz2
glibc-7e2b0c8562b35155820f87b5ff02a8b6850344cc.zip
Link as-needed against ld.so.
-rw-r--r--ChangeLog3
-rw-r--r--Makeconfig11
2 files changed, 13 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 6a01632cf1..aa33b21e53 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2010-04-19 Roland McGrath <roland@redhat.com>
+ * Makeconfig (as-needed, no-as-needed): New variables.
+ (link-libc): Add ld.so inside --as-needed.
+
* stdio-common/tst-fmemopen.c (TEST_FILE): Macro removed.
(main): Take arguments. Construct test file name from ARGV[0].
diff --git a/Makeconfig b/Makeconfig
index cd77fe16b8..c5a58f2abf 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -387,6 +387,14 @@ ifeq ($(elf),yes)
have-initfini = yes
endif
+ifeq ($(have-as-needed),yes)
+as-needed := -Wl,--as-needed
+no-as-needed := -Wl,--no-as-needed
+else
+as-needed :=
+no-as-needed :=
+endif
+
# Installed name of the startup code.
ifneq ($(have-initfini),yes)
# When not having init/fini, there is just one startfile, called crt0.o.
@@ -484,7 +492,8 @@ ifeq ($(elf),yes)
# run the linked programs.
link-libc = -Wl,-rpath-link=$(rpath-link) \
$(common-objpfx)libc.so$(libc.so-version) \
- $(common-objpfx)$(patsubst %,$(libtype.oS),c) $(gnulib)
+ $(common-objpfx)$(patsubst %,$(libtype.oS),c) \
+ $(as-needed) $(common-objpfx)elf/ld.so $(no-as-needed) $(gnulib)
# This is how to find at build-time things that will be installed there.
rpath-dirs = math elf dlfcn nss nis rt resolv crypt
endif