]> granicus.if.org Git - clang/commitdiff
[PowerPC] Set the default PLT mode on OpenBSD/powerpc to Secure PLT.
authorBrad Smith <brad@comstyle.com>
Mon, 19 Nov 2018 00:21:06 +0000 (00:21 +0000)
committerBrad Smith <brad@comstyle.com>
Mon, 19 Nov 2018 00:21:06 +0000 (00:21 +0000)
OpenBSD/powerpc only supports Secure PLT.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@347179 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/ToolChains/Arch/PPC.cpp
lib/Driver/ToolChains/Arch/PPC.h
test/Driver/openbsd.c

index f6a95962ace31f59149fa708952f52b33af021ad..791f1206cf257b543112e32a78369cde546f96f7 100644 (file)
@@ -107,15 +107,19 @@ void ppc::getPPCTargetFeatures(const Driver &D, const llvm::Triple &Triple,
   if (FloatABI == ppc::FloatABI::Soft)
     Features.push_back("-hard-float");
 
-  ppc::ReadGOTPtrMode ReadGOT = ppc::getPPCReadGOTPtrMode(D, Args);
+  ppc::ReadGOTPtrMode ReadGOT = ppc::getPPCReadGOTPtrMode(D, Triple, Args);
   if (ReadGOT == ppc::ReadGOTPtrMode::SecurePlt)
     Features.push_back("+secure-plt");
 }
 
-ppc::ReadGOTPtrMode ppc::getPPCReadGOTPtrMode(const Driver &D, const ArgList &Args) {
+ppc::ReadGOTPtrMode ppc::getPPCReadGOTPtrMode(const Driver &D, const llvm::Triple &Triple,
+                                              const ArgList &Args) {
   if (Args.getLastArg(options::OPT_msecure_plt))
     return ppc::ReadGOTPtrMode::SecurePlt;
-  return ppc::ReadGOTPtrMode::Bss;
+  if (Triple.isOSOpenBSD())
+    return ppc::ReadGOTPtrMode::SecurePlt;
+  else
+    return ppc::ReadGOTPtrMode::Bss;
 }
 
 ppc::FloatABI ppc::getPPCFloatABI(const Driver &D, const ArgList &Args) {
index 3acee91a2ac32bfb3143b9a8662842773dc92774..4f3cd688ca390d51dcf4532c770e3065a2ebb845 100644 (file)
@@ -38,7 +38,7 @@ FloatABI getPPCFloatABI(const Driver &D, const llvm::opt::ArgList &Args);
 
 std::string getPPCTargetCPU(const llvm::opt::ArgList &Args);
 const char *getPPCAsmModeForCPU(StringRef Name);
-ReadGOTPtrMode getPPCReadGOTPtrMode(const Driver &D,
+ReadGOTPtrMode getPPCReadGOTPtrMode(const Driver &D, const llvm::Triple &Triple,
                                     const llvm::opt::ArgList &Args);
 
 void getPPCTargetFeatures(const Driver &D, const llvm::Triple &Triple,
index f16d58ae1481972146f7a7ff1ab583d955dd35ce..182c4d49d64ed3f2bbf00dbafa24491e72526cee 100644 (file)
 // RUN:   | FileCheck -check-prefix=CHECK-ARM-FLOAT-ABI %s
 // CHECK-ARM-FLOAT-ABI-NOT: "-target-feature" "+soft-float"
 // CHECK-ARM-FLOAT-ABI: "-target-feature" "+soft-float-abi"
+
+// Check PowerPC for Secure PLT
+// RUN: %clang -target powerpc-unknown-openbsd -### -c %s 2>&1 \
+// RUN:   | FileCheck -check-prefix=CHECK-POWERPC-SECUREPLT %s
+// CHECK-POWERPC-SECUREPLT: "-target-feature" "+secure-plt"