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

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. From b1d28891098dc4dc5066aede6e20d4e5bd58bed5 Mon Sep 17 00:00:00 2001
  2. From: Jun Yuan Tan <junyuan.tan@starfivetech.com>
  3. Date: Tue, 9 Nov 2021 10:07:13 +0800
  4. Subject: [PATCH 06/34] 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 a80b8ad4e7ed..b7165be9a7a6 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.1