aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSaleem Abdulrasool <compnerd@compnerd.org>2017-06-03 22:31:06 +0000
committerSaleem Abdulrasool <compnerd@compnerd.org>2017-06-03 22:31:06 +0000
commit61a5551f882e6f373b91e5ebdf0b63ef28d90d24 (patch)
tree90f870895507a0a6975aff6f1725287be0f9753f
parent2a4cf84ad28be27a2b1fe32d896abc9a70361c60 (diff)
ADT: handle special case of ARM environment for SUSE
SUSE treats "gnueabi" as "gnueabihf" so make sure that we normalise the environment. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304670 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Support/Triple.cpp4
-rw-r--r--unittests/ADT/TripleTest.cpp5
2 files changed, 9 insertions, 0 deletions
diff --git a/lib/Support/Triple.cpp b/lib/Support/Triple.cpp
index f7b7ad89e95..dc059f86241 100644
--- a/lib/Support/Triple.cpp
+++ b/lib/Support/Triple.cpp
@@ -877,6 +877,10 @@ std::string Triple::normalize(StringRef Str) {
}
}
+ // SUSE uses "gnueabi" to mean "gnueabihf"
+ if (Vendor == Triple::SUSE && Environment == llvm::Triple::GNUEABI)
+ Components[3] = "gnueabihf";
+
if (OS == Triple::Win32) {
Components.resize(4);
Components[2] = "windows";
diff --git a/unittests/ADT/TripleTest.cpp b/unittests/ADT/TripleTest.cpp
index 6d25526e5ad..a67d5951350 100644
--- a/unittests/ADT/TripleTest.cpp
+++ b/unittests/ADT/TripleTest.cpp
@@ -1090,11 +1090,16 @@ TEST(TripleTest, NormalizeARM) {
EXPECT_EQ("armv6eb--netbsd-eabihf", Triple::normalize("armv6eb-netbsd-eabihf"));
EXPECT_EQ("armv7eb--netbsd-eabihf", Triple::normalize("armv7eb-netbsd-eabihf"));
+ EXPECT_EQ("armv7-suse-linux-gnueabihf",
+ Triple::normalize("armv7-suse-linux-gnueabi"));
+
Triple T;
T = Triple("armv6--netbsd-eabi");
EXPECT_EQ(Triple::arm, T.getArch());
T = Triple("armv6eb--netbsd-eabi");
EXPECT_EQ(Triple::armeb, T.getArch());
+ T = Triple("armv7-suse-linux-gnueabihf");
+ EXPECT_EQ(Triple::GNUEABIHF, T.getEnvironment());
}
TEST(TripleTest, ParseARMArch) {