summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Roelofs <jonathan_roelofs@apple.com>2020-09-18 08:47:37 -0700
committerJon Roelofs <jonathan_roelofs@apple.com>2020-09-18 09:19:37 -0700
commit51c5add8547a66caa5fbc9a19a91cd7976944229 (patch)
tree9240283153ee627cace072b9a2d58a6c6f706e35
parent3c2e2df8d03e8ac8e7be1733950993090f2b4710 (diff)
downloadllvm-51c5add8547a66caa5fbc9a19a91cd7976944229.tar.gz
Extending Baremetal toolchain's support for the rtlib option.
Differential Revision: https://reviews.llvm.org/D87164 Patch by Manuel Carrasco!
-rw-r--r--clang/lib/Driver/ToolChains/BareMetal.cpp13
-rw-r--r--clang/test/Driver/baremetal.cpp4
2 files changed, 15 insertions, 2 deletions
diff --git a/clang/lib/Driver/ToolChains/BareMetal.cpp b/clang/lib/Driver/ToolChains/BareMetal.cpp
index 97cfa7d0e156..61839a9e31b0 100644
--- a/clang/lib/Driver/ToolChains/BareMetal.cpp
+++ b/clang/lib/Driver/ToolChains/BareMetal.cpp
@@ -156,8 +156,17 @@ void BareMetal::AddCXXStdlibLibArgs(const ArgList &Args,
void BareMetal::AddLinkRuntimeLib(const ArgList &Args,
ArgStringList &CmdArgs) const {
- CmdArgs.push_back(Args.MakeArgString("-lclang_rt.builtins-" +
- getTriple().getArchName()));
+ ToolChain::RuntimeLibType RLT = GetRuntimeLibType(Args);
+ switch (RLT) {
+ case ToolChain::RLT_CompilerRT:
+ CmdArgs.push_back(
+ Args.MakeArgString("-lclang_rt.builtins-" + getTriple().getArchName()));
+ return;
+ case ToolChain::RLT_Libgcc:
+ CmdArgs.push_back("-lgcc");
+ return;
+ }
+ llvm_unreachable("Unhandled RuntimeLibType.");
}
void baremetal::Linker::ConstructJob(Compilation &C, const JobAction &JA,
diff --git a/clang/test/Driver/baremetal.cpp b/clang/test/Driver/baremetal.cpp
index 3ef5a56425a3..3a5c1555dc2c 100644
--- a/clang/test/Driver/baremetal.cpp
+++ b/clang/test/Driver/baremetal.cpp
@@ -83,3 +83,7 @@
// RUN: %clangxx -target arm-none-eabi -mthread-model posix -v 2>&1 \
// RUN: | FileCheck %s --check-prefix=CHECK-THREAD-MODEL-POSIX
// CHECK-THREAD-MODEL-POSIX: Thread model: posix
+
+// RUN: %clang -### -target arm-none-eabi -rtlib=libgcc -v %s 2>&1 \
+// RUN: | FileCheck %s --check-prefix=CHECK-RTLIB-GCC
+// CHECK-RTLIB-GCC: -lgcc