From 75e09b32262072ee0e8b98bf4aa3a290e43e09d7 Mon Sep 17 00:00:00 2001 From: Fangrui Song Date: Wed, 22 May 2019 07:29:59 +0000 Subject: [PATCH] [PPC64] Parse -elfv1 -elfv2 when specified on target triple MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Summary: For big-endian powerpc64, the default ABI is ELFv1. OpenPower ABI ELFv2 is supported when -mabi=elfv2 is specified. FreeBSD support for PowerPC64 ELFv2 ABI with LLVM is in progress[1]. This patch adds an alternative way to specify ELFv2 ABI on target triple [2]. The following results are expected: ELFv1 when using: -target powerpc64-unknown-freebsd12.0 -target powerpc64-unknown-freebsd12.0 -mabi=elfv1 -target powerpc64-unknown-freebsd12.0-elfv1 ELFv2 when using: -target powerpc64-unknown-freebsd12.0 -mabi=elfv2 -target powerpc64-unknown-freebsd12.0-elfv2 [1] https://wiki.freebsd.org/powerpc/llvm-elfv2 [2] https://clang.llvm.org/docs/CrossCompilation.html Patch by Alfredo Dal'Ava Júnior! Differential Revision: https://reviews.llvm.org/D61950 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@361355 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Basic/Targets/PPC.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/Basic/Targets/PPC.h b/lib/Basic/Targets/PPC.h index 3c2191b43e..a93d266a35 100644 --- a/lib/Basic/Targets/PPC.h +++ b/lib/Basic/Targets/PPC.h @@ -379,13 +379,11 @@ public: if ((Triple.getArch() == llvm::Triple::ppc64le)) { resetDataLayout("e-m:e-i64:64-n32:64"); - ABI = "elfv2"; } else { resetDataLayout("E-m:e-i64:64-n32:64"); - ABI = "elfv1"; } - switch (getTriple().getOS()) { + switch (Triple.getOS()) { case llvm::Triple::FreeBSD: LongDoubleWidth = LongDoubleAlign = 64; LongDoubleFormat = &llvm::APFloat::IEEEdouble(); -- 2.50.1