summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver/ToolChains.cpp
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-08-26 00:55:52 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-08-26 00:55:52 +0000
commite9f7151485e9592ea712cc4a61d0f3595d361a74 (patch)
tree5e3d8687accaf79ae838036a7ff40cdf46be564f /clang/lib/Driver/ToolChains.cpp
parentb6ceacf623dc8bdf446fb3bcc22462d26c33186f (diff)
downloadbcm5719-llvm-e9f7151485e9592ea712cc4a61d0f3595d361a74.tar.gz
bcm5719-llvm-e9f7151485e9592ea712cc4a61d0f3595d361a74.zip
Driver/Darwin: Pass the right arch specific dir for ARM, when linking.
llvm-svn: 112124
Diffstat (limited to 'clang/lib/Driver/ToolChains.cpp')
-rw-r--r--clang/lib/Driver/ToolChains.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp
index 5be810da4f2..f5ed56b3ef6 100644
--- a/clang/lib/Driver/ToolChains.cpp
+++ b/clang/lib/Driver/ToolChains.cpp
@@ -409,9 +409,17 @@ void DarwinClang::AddLinkSearchPathArgs(const ArgList &Args,
default:
break;
case llvm::Triple::arm:
- case llvm::Triple::thumb:
- // FIXME: Get the right subdirectory for ARM.
+ case llvm::Triple::thumb: {
+ std::string Triple = ComputeLLVMTriple(Args);
+ llvm::StringRef TripleStr = Triple;
+ if (TripleStr.startswith("armv5") || TripleStr.startswith("thumbv5"))
+ ArchSpecificDir = "v5";
+ else if (TripleStr.startswith("armv6") || TripleStr.startswith("thumbv6"))
+ ArchSpecificDir = "v6";
+ else if (TripleStr.startswith("armv7") || TripleStr.startswith("thumbv7"))
+ ArchSpecificDir = "v7";
break;
+ }
case llvm::Triple::ppc64:
ArchSpecificDir = "ppc64";
break;
@@ -422,7 +430,6 @@ void DarwinClang::AddLinkSearchPathArgs(const ArgList &Args,
if (ArchSpecificDir) {
P.appendComponent(ArchSpecificDir);
- llvm::errs() << P.str() << "\n";
if (P.exists())
CmdArgs.push_back(Args.MakeArgString("-L" + P.str()));
P.eraseComponent();
OpenPOWER on IntegriCloud