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

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. From daade280c104f13b2508e9e55d4af56629907495 Mon Sep 17 00:00:00 2001
  2. From: Jun Yuan Tan <junyuan.tan@starfivetech.com>
  3. Date: Fri, 22 Oct 2021 11:25:45 +0800
  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. Rebased to LLVM 14.0.0 by Jun Yuan Tan
  9. Signed-off-by: Dan McGregor <dan.mcgregor@usask.ca>
  10. Signed-off-by: Khem Raj <raj.khem@gmail.com>
  11. Signed-off-by: Jun Yuan Tan <junyuan.tan@starfivetech.com>
  12. ---
  13. clang/lib/Driver/ToolChains/Linux.cpp | 16 ++++++++++++++++
  14. 1 file changed, 16 insertions(+)
  15. diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
  16. index 20ed697fecbc..3d49248d7343 100644
  17. --- a/clang/lib/Driver/ToolChains/Linux.cpp
  18. +++ b/clang/lib/Driver/ToolChains/Linux.cpp
  19. @@ -480,11 +480,19 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
  20. LibDir = "lib64";
  21. Loader =
  22. (tools::ppc::hasPPCAbiArg(Args, "elfv2")) ? "ld64.so.2" : "ld64.so.1";
  23. + if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
  24. + getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
  25. + LibDir = "lib";
  26. + }
  27. break;
  28. case llvm::Triple::ppc64le:
  29. LibDir = "lib64";
  30. Loader =
  31. (tools::ppc::hasPPCAbiArg(Args, "elfv1")) ? "ld64.so.1" : "ld64.so.2";
  32. + if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
  33. + getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
  34. + LibDir = "lib";
  35. + }
  36. break;
  37. case llvm::Triple::riscv32: {
  38. StringRef ABIName = tools::riscv::getRISCVABI(Args, Triple);
  39. @@ -506,6 +514,10 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
  40. case llvm::Triple::sparcv9:
  41. LibDir = "lib64";
  42. Loader = "ld-linux.so.2";
  43. + if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
  44. + getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
  45. + LibDir = "lib";
  46. + }
  47. break;
  48. case llvm::Triple::systemz:
  49. LibDir = "lib";
  50. @@ -520,6 +532,10 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
  51. LibDir = X32 ? "libx32" : "lib64";
  52. Loader = X32 ? "ld-linux-x32.so.2" : "ld-linux-x86-64.so.2";
  53. + if (!getVFS().exists(getDriver().SysRoot + "/" + LibDir + "/" + Loader) &&
  54. + getVFS().exists(getDriver().SysRoot + "/lib/" + Loader)) {
  55. + LibDir = "lib";
  56. + }
  57. break;
  58. }
  59. case llvm::Triple::ve:
  60. --
  61. 2.33.0