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

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. From 953b9d2c5a7ef4224dec304154feceb30e2b836f 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. Upstream-Status: Pending
  9. Signed-off-by: Dan McGregor <dan.mcgregor@usask.ca>
  10. Signed-off-by: Khem Raj <raj.khem@gmail.com>
  11. ---
  12. clang/lib/Driver/ToolChains/Linux.cpp | 16 ++++++++++++++++
  13. 1 file changed, 16 insertions(+)
  14. diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
  15. index c6fb290ffdb4..2a58f876a68d 100644
  16. --- a/clang/lib/Driver/ToolChains/Linux.cpp
  17. +++ b/clang/lib/Driver/ToolChains/Linux.cpp
  18. @@ -518,11 +518,19 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
  19. LibDir = "lib64";
  20. Loader =
  21. (tools::ppc::hasPPCAbiArg(Args, "elfv2")) ? "ld64.so.2" : "ld64.so.1";
  22. + if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
  23. + getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
  24. + LibDir = "lib";
  25. + }
  26. break;
  27. case llvm::Triple::ppc64le:
  28. LibDir = "lib64";
  29. Loader =
  30. (tools::ppc::hasPPCAbiArg(Args, "elfv1")) ? "ld64.so.1" : "ld64.so.2";
  31. + if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
  32. + getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
  33. + LibDir = "lib";
  34. + }
  35. break;
  36. case llvm::Triple::riscv32: {
  37. StringRef ABIName = tools::riscv::getRISCVABI(Args, Triple);
  38. @@ -544,6 +552,10 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
  39. case llvm::Triple::sparcv9:
  40. LibDir = "lib64";
  41. Loader = "ld-linux.so.2";
  42. + if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
  43. + getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
  44. + LibDir = "lib";
  45. + }
  46. break;
  47. case llvm::Triple::systemz:
  48. LibDir = "lib";
  49. @@ -558,6 +570,10 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
  50. LibDir = X32 ? "libx32" : "lib64";
  51. Loader = X32 ? "ld-linux-x32.so.2" : "ld-linux-x86-64.so.2";
  52. + if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
  53. + getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
  54. + LibDir = "lib";
  55. + }
  56. break;
  57. }
  58. case llvm::Triple::ve: