0008-change-baremetal-multilib-directory-name-to-align-wi.patch 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. From aaa51f4f755256f9a53b5bfba8054b135050dbeb Mon Sep 17 00:00:00 2001
  2. From: "max.ma" <max.ma@starfivetech.com>
  3. Date: Sun, 9 Oct 2022 00:19:02 -0700
  4. Subject: [PATCH 8/8] change baremetal multilib directory name to align with
  5. gcc 12.1
  6. ---
  7. clang/lib/Driver/ToolChains/Gnu.cpp | 16 ++++++++++++++--
  8. 1 file changed, 14 insertions(+), 2 deletions(-)
  9. diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp
  10. index 045f063b28f2..208671a4f962 100644
  11. --- a/clang/lib/Driver/ToolChains/Gnu.cpp
  12. +++ b/clang/lib/Driver/ToolChains/Gnu.cpp
  13. @@ -1657,7 +1657,11 @@ static void findRISCVBareMetalMultilibs(const Driver &D,
  14. {"rv32i", "ilp32"}, {"rv32im", "ilp32"}, {"rv32iac", "ilp32"},
  15. {"rv32imac", "ilp32"}, {"rv32imafc", "ilp32f"}, {"rv64imac", "lp64"},
  16. {"rv64imafdc", "lp64d"}, {"rv64imafdc_zba_zbb_zbc_zbs", "lp64d"},
  17. - {"rv64imafdcv_zba_zbb_zbc_zbs", "lp64d"}, {"rv64imafdcv", "lp64d"},};
  18. + {"rv64imafdc_zicsr_zifencei", "lp64d"},
  19. + {"rv64imafdc_zicsr_zifencei_zba_zbb_zbc_zbs", "lp64d"},
  20. + {"rv64imafdcv_zicsr_zifencei_zve32f_zve32x_zve64d_zve64f_zve64x_zvl128b_zvl32b_zvl64b", "lp64d"},
  21. + {"rv64imafdcv_zicsr_zifencei_zba_zbb_zbc_zbs_zve32f_zve32x_zve64d_zve64f_zve64x_zvl128b_zvl32b_zvl64b", "lp64d"},
  22. + };
  23. std::vector<Multilib> Ms;
  24. for (auto Element : RISCVMultilibSet) {
  25. @@ -1683,8 +1687,10 @@ static void findRISCVBareMetalMultilibs(const Driver &D,
  26. llvm::StringSet<> Added_ABIs;
  27. StringRef ABIName = tools::riscv::getRISCVABI(Args, TargetTriple);
  28. StringRef MArch = tools::riscv::getRISCVArch(Args, TargetTriple);
  29. +
  30. std::string Ext, Extra;
  31. - for (auto I = MArch.begin(), E = MArch.end(); I != E; ) {
  32. + Ext = "rv";
  33. + for (auto I = MArch.begin() + 2, E = MArch.end(); I != E; ) {
  34. char c = *I;
  35. switch (c) {
  36. default:
  37. @@ -1693,12 +1699,18 @@ static void findRISCVBareMetalMultilibs(const Driver &D,
  38. case 'g':
  39. Ext += "imafd";
  40. + Extra += "_zicsr_zifencei";
  41. break;
  42. case 'b':
  43. Extra += "_zba_zbb_zbc_zbs";
  44. break;
  45. + case 'v':
  46. + Ext += c;
  47. + Extra += "_zve32f_zve32x_zve64d_zve64f_zve64x_zvl128b_zvl32b_zvl64b";
  48. + break;
  49. +
  50. case '_':
  51. for (;I != E; I++)
  52. Ext += *I;
  53. --
  54. 2.25.1