haowei created this revision.
haowei added reviewers: mcgrathr, phosek.
Herald added a subscriber: abidh.
Herald added a project: All.
haowei requested review of this revision.
Herald added subscribers: cfe-commits, MaskRay.
Herald added a project: clang.

This patch enables response file support when using lld on baremetal targets


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D148383

Files:
  clang/lib/Driver/ToolChains/BareMetal.cpp


Index: clang/lib/Driver/ToolChains/BareMetal.cpp
===================================================================
--- clang/lib/Driver/ToolChains/BareMetal.cpp
+++ clang/lib/Driver/ToolChains/BareMetal.cpp
@@ -345,7 +345,14 @@
   CmdArgs.push_back("-o");
   CmdArgs.push_back(Output.getFilename());
 
-  C.addCommand(std::make_unique<Command>(JA, *this, 
ResponseFileSupport::None(),
+  const char *Linker = Args.MakeArgString(TC.GetLinkerPath());
+  ResponseFileSupport LinkerResponseFileSupport = 
ResponseFileSupport::AtFileCurCP();
+  if (llvm::sys::path::filename(Linker) != "ld.lld" &&
+      llvm::sys::path::stem(Linker) != "ld.lld") {
+        LinkerResponseFileSupport = ResponseFileSupport::None();
+  }
+
+  C.addCommand(std::make_unique<Command>(JA, *this, LinkerResponseFileSupport,
                                          
Args.MakeArgString(TC.GetLinkerPath()),
                                          CmdArgs, Inputs, Output));
 }


Index: clang/lib/Driver/ToolChains/BareMetal.cpp
===================================================================
--- clang/lib/Driver/ToolChains/BareMetal.cpp
+++ clang/lib/Driver/ToolChains/BareMetal.cpp
@@ -345,7 +345,14 @@
   CmdArgs.push_back("-o");
   CmdArgs.push_back(Output.getFilename());
 
-  C.addCommand(std::make_unique<Command>(JA, *this, ResponseFileSupport::None(),
+  const char *Linker = Args.MakeArgString(TC.GetLinkerPath());
+  ResponseFileSupport LinkerResponseFileSupport = ResponseFileSupport::AtFileCurCP();
+  if (llvm::sys::path::filename(Linker) != "ld.lld" &&
+      llvm::sys::path::stem(Linker) != "ld.lld") {
+        LinkerResponseFileSupport = ResponseFileSupport::None();
+  }
+
+  C.addCommand(std::make_unique<Command>(JA, *this, LinkerResponseFileSupport,
                                          Args.MakeArgString(TC.GetLinkerPath()),
                                          CmdArgs, Inputs, Output));
 }
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to