about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog15
-rw-r--r--Makeconfig19
2 files changed, 29 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 697f93741c..a4f9c9e5c6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,20 @@
 2019-04-26  Florian Weimer  <fweimer@redhat.com>
 
+	Makeconfig: Move -Wl,-rpath-link options before library references.
+	* Makeconfig (+link-pie, +link): Add $(link-libc-rpath-link).
+	(link-libc): Remove $(link-libc-rpath-link).
+
+2019-04-25  Florian Weimer  <fweimer@redhat.com>
+
+	* Makeconfig (+link-pie-before-libc): Remove $(CC).
+	(+link-pie, +link-pie-tests, +link-pie-printers-tests): Add $(CC).
+	(+link-static-before-libc): Remove $(CC).
+	(+link-static, +link-static-tests): Add $(CC).
+	(+link-before-libc): Remove $(CC).
+	(+link, +link-pie, +link-pie-printers): Add $(CC).
+
+2019-04-26  Florian Weimer  <fweimer@redhat.com>
+
 	* Makeconfig (+link-pie-before-libc): Remove $(CC).
 	(+link-pie, +link-pie-tests, +link-pie-printers-tests): Add $(CC).
 	(+link-static-before-libc): Remove $(CC).
diff --git a/Makeconfig b/Makeconfig
index 92c9b59bb5..0e386fbc19 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -428,8 +428,8 @@ ifndef +link-pie
 	     $(link-extra-libs)
 +link-pie-after-libc = $(+postctorS) $(+postinit)
 define +link-pie
-$(CC) $(+link-pie-before-libc) $(rtld-LDFLAGS) $(link-extra-flags) \
-  $(link-libc) $(+link-pie-after-libc)
+$(CC) $(link-libc-rpath-link) $(+link-pie-before-libc) $(rtld-LDFLAGS) \
+  $(link-extra-flags) $(link-libc) $(+link-pie-after-libc)
 $(call after-link,$@)
 endef
 define +link-pie-tests
@@ -490,8 +490,8 @@ else  # not build-pie-default
 	      $(link-extra-libs)
 +link-after-libc = $(+postctor) $(+postinit)
 define +link
-$(CC) $(+link-before-libc) $(rtld-LDFLAGS) $(link-extra-flags) $(link-libc) \
-  $(+link-after-libc)
+$(CC) $(link-libc-rpath-link) $(+link-before-libc) $(rtld-LDFLAGS) \
+  $(link-extra-flags) $(link-libc) $(+link-after-libc)
 $(call after-link,$@)
 endef
 define +link-tests
@@ -552,6 +552,15 @@ ifeq (yes,$(build-shared))
 link-libc-rpath = -Wl,-rpath=$(rpath-link)
 link-libc-rpath-link = -Wl,-rpath-link=$(rpath-link)
 
+# For programs which are not tests, $(link-libc-rpath-link) is added
+# directly in $(+link), $(+link-pie) above, so that -Wl,-rpath-link
+# comes before the expansion of LDLIBS-* and affects libraries added
+# there.  For shared objects, -Wl,-rpath-link is added via
+# $(build-shlib-helper) and $(build-module-helper) in Makerules (also
+# before the expansion of LDLIBS-* variables).
+
+# Tests use -Wl,-rpath instead of -Wl,-rpath-link for
+# build-hardcoded-path-in-tests.
 ifeq (yes,$(build-hardcoded-path-in-tests))
 link-libc-tests-rpath-link = $(link-libc-rpath)
 else
@@ -562,7 +571,7 @@ link-libc-before-gnulib = $(common-objpfx)libc.so$(libc.so-version) \
 			  $(common-objpfx)$(patsubst %,$(libtype.oS),c) \
 			  $(as-needed) $(elf-objpfx)ld.so \
 			  $(no-as-needed)
-link-libc = $(link-libc-rpath-link) $(link-libc-before-gnulib) $(gnulib)
+link-libc = $(link-libc-before-gnulib) $(gnulib)
 
 link-libc-tests-after-rpath-link = $(link-libc-before-gnulib) $(gnulib-tests)
 link-libc-tests = $(link-libc-tests-rpath-link) \