Repository: lucy-charmonizer
Updated Branches:
refs/heads/master 0539a8ce8 -> 7c09817b4
Add --disable-new-dtags option when setting rpath
Some newer Linux systems enable the "new dtags" linker option by
default. With this option --rpath sets DT_RUNPATH instead of DT_RPATH.
Unfortunately, DT_RUNPATH is not applied transitively when searching
for indirect dependencies, breaking the Lucy test executable. See
https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/1253638
https://sourceware.org/bugzilla/show_bug.cgi?id=13945
Project: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/commit/7c09817b
Tree: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/tree/7c09817b
Diff: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/diff/7c09817b
Branch: refs/heads/master
Commit: 7c09817b4fdcaa9dc1714bb5ed3101c8a2c931c8
Parents: 0539a8c
Author: Nick Wellnhofer <[email protected]>
Authored: Sat May 20 14:55:08 2017 +0200
Committer: Nick Wellnhofer <[email protected]>
Committed: Sat May 20 14:55:08 2017 +0200
----------------------------------------------------------------------
src/Charmonizer/Core/CFlags.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/blob/7c09817b/src/Charmonizer/Core/CFlags.c
----------------------------------------------------------------------
diff --git a/src/Charmonizer/Core/CFlags.c b/src/Charmonizer/Core/CFlags.c
index ab57fcc..c42b6bf 100644
--- a/src/Charmonizer/Core/CFlags.c
+++ b/src/Charmonizer/Core/CFlags.c
@@ -363,7 +363,15 @@ chaz_CFlags_add_rpath(chaz_CFlags *flags, const char
*path) {
if (chaz_CC_binary_format() != CHAZ_CC_BINFMT_ELF) { return; }
if (flags->style == CHAZ_CFLAGS_STYLE_GNU) {
- string = chaz_Util_join("", "-Wl,-rpath,", path, NULL);
+ /* If "new dtags" are enabled by default, DT_RUNPATH is set instead of
+ * DT_RPATH. Unfortunately, DT_RUNPATH is not applied transitively
+ * when searching for indirect dependencies. See
+ *
+ * https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/1253638
+ * https://sourceware.org/bugzilla/show_bug.cgi?id=13945
+ */
+ string = chaz_Util_join("", "-Wl,--disable-new-dtags -Wl,-rpath,",
+ path, NULL);
}
else if (flags->style == CHAZ_CFLAGS_STYLE_SUN_C) {
string = chaz_Util_join(" ", "-R", path, NULL);