1From 7ff4f134a5e5e1f6ffe31637a474cf118ae0079b Mon Sep 17 00:00:00 2001 2From: Dan McGregor <dan.mcgregor@usask.ca> 3Date: Wed, 26 Apr 2017 20:29:41 -0600 4Subject: [PATCH] clang: driver: Check sysroot for ldso path 5 6OE does not necessarily follow the default path for the dynamic linker, 7therefore adjust it for OE. Check for the default path, and if it isn't 8there, check /lib. 9 10Signed-off-by: Dan McGregor <dan.mcgregor@usask.ca> 11Signed-off-by: Khem Raj <raj.khem@gmail.com> 12--- 13 clang/lib/Driver/ToolChains/Linux.cpp | 16 ++++++++++++++++ 14 1 file changed, 16 insertions(+) 15 16diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp 17index f85c04df4f6c..97e987c37e4a 100644 18--- a/clang/lib/Driver/ToolChains/Linux.cpp 19+++ b/clang/lib/Driver/ToolChains/Linux.cpp 20@@ -493,11 +493,19 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const { 21 LibDir = "lib64"; 22 Loader = 23 (tools::ppc::hasPPCAbiArg(Args, "elfv2")) ? "ld64.so.2" : "ld64.so.1"; 24+ if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) && 25+ getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) { 26+ LibDir = "lib"; 27+ } 28 break; 29 case llvm::Triple::ppc64le: 30 LibDir = "lib64"; 31 Loader = 32 (tools::ppc::hasPPCAbiArg(Args, "elfv1")) ? "ld64.so.1" : "ld64.so.2"; 33+ if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) && 34+ getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) { 35+ LibDir = "lib"; 36+ } 37 break; 38 case llvm::Triple::riscv32: { 39 StringRef ABIName = tools::riscv::getRISCVABI(Args, Triple); 40@@ -519,6 +527,10 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const { 41 case llvm::Triple::sparcv9: 42 LibDir = "lib64"; 43 Loader = "ld-linux.so.2"; 44+ if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) && 45+ getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) { 46+ LibDir = "lib"; 47+ } 48 break; 49 case llvm::Triple::systemz: 50 LibDir = "lib"; 51@@ -533,6 +545,10 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const { 52 53 LibDir = X32 ? "libx32" : "lib64"; 54 Loader = X32 ? "ld-linux-x32.so.2" : "ld-linux-x86-64.so.2"; 55+ if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) && 56+ getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) { 57+ LibDir = "lib"; 58+ } 59 break; 60 } 61 case llvm::Triple::ve: 62