diff options
author | Brad Smith <brad@comstyle.com> | 2017-04-22 17:15:15 +0000 |
---|---|---|
committer | Brad Smith <brad@comstyle.com> | 2017-04-22 17:15:15 +0000 |
commit | c82a481e77cbeeebb53de2ad64de816e96cbcaea (patch) | |
tree | 160f7cadca2f6e5b3f8c8655aa39f41b85e0e261 | |
parent | 86a3750c3c209d591600c095124265f66c9e908c (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.cpp | 2 | ||||
-rw-r--r-- | lib/Driver/Tools.cpp | 6 | ||||
-rw-r--r-- | test/Driver/arm-abi.c | 4 | ||||
-rw-r--r-- | test/Driver/openbsd.c | 5 |
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" |