summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYann E. MORIN <yann.morin.1998@free.fr>2018-05-28 19:45:18 (GMT)
committerPeter Korsgaard <peter@korsgaard.com>2018-06-18 08:07:39 (GMT)
commit31bdd82f84a79e7acef54a6c9ff48d7281a5ecc3 (patch)
tree3b2dc3f369f0f5a6b28906426cd6d4cd8f8a275a
parenta85d9fd851ed1e463bda315230105e673a64e29c (diff)
downloadbuildroot-31bdd82f84a79e7acef54a6c9ff48d7281a5ecc3.tar.gz
buildroot-31bdd82f84a79e7acef54a6c9ff48d7281a5ecc3.tar.bz2
package/elf2flt: replace hard-links with copies to fix rpath
Do for elf2flt what we did for binutils: replace the hardlinks (which break rpath handling) with copies of the individaul tools. See previous commit (package/binutils: switch from symlinks to copies and commit f9cffb6af4 (binutils: replace hard-links with soft-links to fix rpath) for the complete story. Fixes: #11031. Reported-by: Christophe Priouzeau <christophe.priouzeau@st.com> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Christophe Priouzeau <christophe.priouzeau@st.com> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Cc: Peter Korsgaard <peter@korsgaard.com> Cc: Arnout Vandecappelle <arnout@mind.be> Signed-off-by: Peter Korsgaard <peter@korsgaard.com> (cherry picked from commit b37069340010f4d26c3baa741f2dc996014b7c66) Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
-rw-r--r--package/elf2flt/elf2flt.mk16
1 files changed, 16 insertions, 0 deletions
diff --git a/package/elf2flt/elf2flt.mk b/package/elf2flt/elf2flt.mk
index 995dfed..557f94d 100644
--- a/package/elf2flt/elf2flt.mk
+++ b/package/elf2flt/elf2flt.mk
@@ -29,4 +29,20 @@ endif
HOST_ELF2FLT_CONF_ENV = LIBS="$(HOST_ELF2FLT_LIBS)"
+# Hardlinks between binaries in different directories cause a problem
+# with rpath fixup, so we de-hardlink those binaries, and replace them
+# with copies instead. Note that elf2flt will rename ld to ld.real
+# before installing its own ld, but we already took care of the
+# original ld from binutils so that it is already de-hardlinked. So
+# ld is now the one from elf2flt, and we want to de-hardlinke it.
+ELF2FLT_TOOLS = elf2flt flthdr ld
+define HOST_ELF2FLT_FIXUP_HARDLINKS
+ $(foreach tool,$(ELF2FLT_TOOLS),\
+ rm -f $(HOST_DIR)/$(GNU_TARGET_NAME)/bin/$(tool) && \
+ cp -a $(HOST_DIR)/bin/$(GNU_TARGET_NAME)-$(tool) \
+ $(HOST_DIR)/$(GNU_TARGET_NAME)/bin/$(tool)
+ )
+endef
+HOST_ELF2FLT_POST_INSTALL_HOOKS += HOST_ELF2FLT_FIXUP_HARDLINKS
+
$(eval $(host-autotools-package))