Skip to content

Commit cb7f903

Browse files
brad0zmodem
authored andcommitted
Hook up OpenBSD 64-bit PowerPC support
(cherry picked from commit 4eb4ebf)
1 parent 7e6bf0b commit cb7f903

File tree

7 files changed

+14
-4
lines changed

7 files changed

+14
-4
lines changed

clang/lib/Basic/Targets.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,8 @@ TargetInfo *AllocateTarget(const llvm::Triple &Triple,
346346
return new FreeBSDTargetInfo<PPC64TargetInfo>(Triple, Opts);
347347
case llvm::Triple::NetBSD:
348348
return new NetBSDTargetInfo<PPC64TargetInfo>(Triple, Opts);
349+
case llvm::Triple::OpenBSD:
350+
return new OpenBSDTargetInfo<PPC64TargetInfo>(Triple, Opts);
349351
case llvm::Triple::AIX:
350352
return new AIXPPC64TargetInfo(Triple, Opts);
351353
default:
@@ -358,6 +360,8 @@ TargetInfo *AllocateTarget(const llvm::Triple &Triple,
358360
return new LinuxTargetInfo<PPC64TargetInfo>(Triple, Opts);
359361
case llvm::Triple::NetBSD:
360362
return new NetBSDTargetInfo<PPC64TargetInfo>(Triple, Opts);
363+
case llvm::Triple::OpenBSD:
364+
return new OpenBSDTargetInfo<PPC64TargetInfo>(Triple, Opts);
361365
default:
362366
return new PPC64TargetInfo(Triple, Opts);
363367
}

clang/lib/Basic/Targets/OSTargets.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -478,6 +478,8 @@ class LLVM_LIBRARY_VISIBILITY OpenBSDTargetInfo : public OSTargetInfo<Target> {
478478
case llvm::Triple::mips64:
479479
case llvm::Triple::mips64el:
480480
case llvm::Triple::ppc:
481+
case llvm::Triple::ppc64:
482+
case llvm::Triple::ppc64le:
481483
case llvm::Triple::sparcv9:
482484
this->MCountName = "_mcount";
483485
break;

clang/lib/Basic/Targets/PPC.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -414,8 +414,8 @@ class LLVM_LIBRARY_VISIBILITY PPC64TargetInfo : public PPCTargetInfo {
414414
ABI = "elfv1";
415415
}
416416

417-
if (Triple.isOSFreeBSD() || Triple.getOS() == llvm::Triple::AIX ||
418-
Triple.isMusl()) {
417+
if (Triple.isOSFreeBSD() || Triple.isOSOpenBSD() ||
418+
Triple.getOS() == llvm::Triple::AIX || Triple.isMusl()) {
419419
LongDoubleWidth = LongDoubleAlign = 64;
420420
LongDoubleFormat = &llvm::APFloat::IEEEdouble();
421421
}

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1879,8 +1879,8 @@ void Clang::AddPPCTargetArgs(const ArgList &Args,
18791879
ABIName = "elfv1-qpx";
18801880
break;
18811881
}
1882-
1883-
if (T.isMusl() || (T.isOSFreeBSD() && T.getOSMajorVersion() >= 13))
1882+
if ((T.isOSFreeBSD() && T.getOSMajorVersion() >= 13) ||
1883+
T.isOSOpenBSD() || T.isMusl()
18841884
ABIName = "elfv2";
18851885
else
18861886
ABIName = "elfv1";

clang/test/Driver/ppc-abi.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
// RUN: %clang -target powerpc64-unknown-freebsd12 %s -### 2>&1 | FileCheck --check-prefix=CHECK-ELFv1 %s
2929
// RUN: %clang -target powerpc64-unknown-freebsd13 %s -### 2>&1 | FileCheck --check-prefix=CHECK-ELFv2-BE %s
3030
// RUN: %clang -target powerpc64-unknown-freebsd14 %s -### 2>&1 | FileCheck --check-prefix=CHECK-ELFv2-BE %s
31+
// RUN: %clang -target powerpc64-unknown-openbsd %s -### 2>&1 | FileCheck --check-prefix=CHECK-ELFv2-BE-PIE %
3132
// RUN: %clang -target powerpc64-linux-musl %s -### 2>&1 | FileCheck --check-prefix=CHECK-ELFv2-BE-PIE %s
3233

3334
// CHECK-ELFv1: "-mrelocation-model" "static"

clang/test/Preprocessor/init-ppc64.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1078,6 +1078,7 @@
10781078
// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-unknown-freebsd11 -target-abi elfv1 -xc /dev/null | FileCheck --check-prefix=PPC64-ELFv1 %s
10791079
// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-unknown-freebsd12 -target-abi elfv1 -xc /dev/null | FileCheck --check-prefix=PPC64-ELFv1 %s
10801080
// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-unknown-freebsd13 -target-abi elfv2 -xc /dev/null | FileCheck --check-prefix=PPC64-ELFv2 %s
1081+
// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-unknown-openbsd -target-abi elfv2 -xc /dev/null | FileCheck --check-prefix=PPC64-ELFv2 %s
10811082
// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-linux-musl -target-abi elfv2 -xc /dev/null | FileCheck --check-prefix=PPC64-ELFv2 %s
10821083

10831084
// PPC64-ELFv1:#define _CALL_ELF 1

clang/test/Preprocessor/init.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7321,6 +7321,8 @@
73217321
// RUN: %clang_cc1 -E -dM -ffreestanding -triple=arm-unknown-openbsd6.1-gnueabi < /dev/null | FileCheck -match-full-lines -check-prefix OPENBSD %s
73227322
// RUN: %clang_cc1 -E -dM -ffreestanding -triple=i386-unknown-openbsd6.1 < /dev/null | FileCheck -match-full-lines -check-prefix OPENBSD %s
73237323
// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc-unknown-openbsd6.1 < /dev/null | FileCheck -match-full-lines -check-prefix OPENBSD %s
7324+
// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64-unknown-openbsd6.1 < /dev/null | FileCheck -match-full-lines -check-prefix OPENBSD %s
7325+
// RUN: %clang_cc1 -E -dM -ffreestanding -triple=powerpc64le-unknown-openbsd6.1 < /dev/null | FileCheck -match-full-lines -check-prefix OPENBSD %s
73247326
// RUN: %clang_cc1 -E -dM -ffreestanding -triple=mips64-unknown-openbsd6.1 < /dev/null | FileCheck -match-full-lines -check-prefix OPENBSD %s
73257327
// RUN: %clang_cc1 -E -dM -ffreestanding -triple=mips64el-unknown-openbsd6.1 < /dev/null | FileCheck -match-full-lines -check-prefix OPENBSD %s
73267328
// RUN: %clang_cc1 -E -dM -ffreestanding -triple=sparc64-unknown-openbsd6.1 < /dev/null | FileCheck -match-full-lines -check-prefix OPENBSD %s

0 commit comments

Comments
 (0)