summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad Smith <brad@comstyle.com>2017-04-22 17:15:15 +0000
committerBrad Smith <brad@comstyle.com>2017-04-22 17:15:15 +0000
commitc82a481e77cbeeebb53de2ad64de816e96cbcaea (patch)
tree160f7cadca2f6e5b3f8c8655aa39f41b85e0e261
parent86a3750c3c209d591600c095124265f66c9e908c (diff)
Merging r296430:
------------------------------------------------------------------------ r296430 | brad | 2017-02-27 22:20:26 -0500 (Mon, 27 Feb 2017) | 2 lines Set ABIs correctly for OpenBSD/arm; soft float and aapcs-linux. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/cfe/branches/release_40@301086 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Basic/Targets.cpp2
-rw-r--r--lib/Driver/Tools.cpp6
-rw-r--r--test/Driver/arm-abi.c4
-rw-r--r--test/Driver/openbsd.c5
4 files changed, 17 insertions, 0 deletions
diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp
index 0c94b88a98..a8890b7ef8 100644
--- a/lib/Basic/Targets.cpp
+++ b/lib/Basic/Targets.cpp
@@ -5146,6 +5146,8 @@ public:
default:
if (Triple.getOS() == llvm::Triple::NetBSD)
setABI("apcs-gnu");
+ else if (Triple.getOS() == llvm::Triple::OpenBSD)
+ setABI("aapcs-linux");
else
setABI("aapcs");
break;
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
index 0ed8212984..f53de3eed8 100644
--- a/lib/Driver/Tools.cpp
+++ b/lib/Driver/Tools.cpp
@@ -962,6 +962,10 @@ arm::FloatABI arm::getARMFloatABI(const ToolChain &TC, const ArgList &Args) {
}
break;
+ case llvm::Triple::OpenBSD:
+ ABI = FloatABI::Soft;
+ break;
+
default:
switch (Triple.getEnvironment()) {
case llvm::Triple::GNUEABIHF:
@@ -1251,6 +1255,8 @@ void Clang::AddARMTargetArgs(const llvm::Triple &Triple, const ArgList &Args,
default:
if (Triple.getOS() == llvm::Triple::NetBSD)
ABIName = "apcs-gnu";
+ else if (Triple.getOS() == llvm::Triple::OpenBSD)
+ ABIName = "aapcs-linux";
else
ABIName = "aapcs";
break;
diff --git a/test/Driver/arm-abi.c b/test/Driver/arm-abi.c
index 897c108048..ba5c4ba148 100644
--- a/test/Driver/arm-abi.c
+++ b/test/Driver/arm-abi.c
@@ -28,6 +28,10 @@
// RUN: %clang -target arm--netbsd-eabihf %s -### -o %t.o 2>&1 \
// RUN: | FileCheck -check-prefix=CHECK-AAPCS %s
+// OpenBSD defaults to aapcs-linux
+// RUN: %clang -target arm--openbsd- %s -### -o %t.o 2>&1 \
+// RUN: | FileCheck -check-prefix=CHECK-AAPCS-LINUX %s
+
// Otherwise, ABI is selected based on environment
// RUN: %clang -target arm---android %s -### -o %t.o 2>&1 \
// RUN: | FileCheck -check-prefix=CHECK-AAPCS-LINUX %s
diff --git a/test/Driver/openbsd.c b/test/Driver/openbsd.c
index 4160fbb767..b4e2796c5d 100644
--- a/test/Driver/openbsd.c
+++ b/test/Driver/openbsd.c
@@ -96,3 +96,8 @@
// CHECK-STATIC-PIE: "{{.*}}rcrt0.o"
// CHECK-STATIC-PIE-NOT: "-nopie"
// CHECK-NOPIE: "-nopie" "{{.*}}crt0.o"
+
+// Check ARM float ABI
+// RUN: %clang -target arm-unknown-openbsd -### -c %s 2>&1 \
+// RUN: | FileCheck -check-prefix=CHECK-ARM-FLOAT-ABI %s
+// CHECK-ARM-FLOAT-ABI: "-mfloat-abi" "soft"