From c82a481e77cbeeebb53de2ad64de816e96cbcaea Mon Sep 17 00:00:00 2001 From: Brad Smith Date: Sat, 22 Apr 2017 17:15:15 +0000 Subject: 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 --- lib/Basic/Targets.cpp | 2 ++ lib/Driver/Tools.cpp | 6 ++++++ test/Driver/arm-abi.c | 4 ++++ test/Driver/openbsd.c | 5 +++++ 4 files changed, 17 insertions(+) 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" -- cgit v1.2.3