0006-clang-driver-Check-sysroot-for-ldso-path.patch 2.4 KB

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