svn commit: r349351 - in head: contrib/llvm/lib/Target/PowerPC contrib/llvm/tools/clang/lib/Driver/ToolChains/Arch gnu/usr.bin/cc/cc_tools share/mk

Justin Hibbits jhibbits at FreeBSD.org
Tue Jun 25 02:35:24 UTC 2019


Author: jhibbits
Date: Tue Jun 25 02:35:22 2019
New Revision: 349351
URL: https://svnweb.freebsd.org/changeset/base/349351

Log:
  powerpc: Transition to Secure-PLT, like most other OSs (Toolchain part)
  
  Summary:
  Toolchain follow-up to r349350.  LLVM patches will be submitted upstream for
  9.0 as well.
  
  The bsd.cpu.mk change is required because GNU ld assumes BSS-PLT if it
  cannot determine for certain that it needs Secure-PLT, and some binaries do
  not compile in such a way to make it know to use Secure-PLT.
  
  Reviewed By: nwhitehorn, bdragon, pfg
  Differential Revision: https://reviews.freebsd.org/D20598

Modified:
  head/contrib/llvm/lib/Target/PowerPC/PPCSubtarget.cpp
  head/contrib/llvm/tools/clang/lib/Driver/ToolChains/Arch/PPC.cpp
  head/gnu/usr.bin/cc/cc_tools/Makefile.hdrs
  head/share/mk/bsd.cpu.mk

Modified: head/contrib/llvm/lib/Target/PowerPC/PPCSubtarget.cpp
==============================================================================
--- head/contrib/llvm/lib/Target/PowerPC/PPCSubtarget.cpp	Tue Jun 25 00:40:44 2019	(r349350)
+++ head/contrib/llvm/lib/Target/PowerPC/PPCSubtarget.cpp	Tue Jun 25 02:35:22 2019	(r349351)
@@ -138,7 +138,8 @@ void PPCSubtarget::initSubtargetFeatures(StringRef CPU
   if (isDarwin())
     HasLazyResolverStubs = true;
 
-  if (TargetTriple.isOSNetBSD() || TargetTriple.isOSOpenBSD())
+  if ((TargetTriple.isOSFreeBSD() && TargetTriple.getOSMajorVersion() >= 13)
+      || TargetTriple.isOSNetBSD() || TargetTriple.isOSOpenBSD())
     SecurePlt = true;
 
   if (HasSPE && IsPPC64)

Modified: head/contrib/llvm/tools/clang/lib/Driver/ToolChains/Arch/PPC.cpp
==============================================================================
--- head/contrib/llvm/tools/clang/lib/Driver/ToolChains/Arch/PPC.cpp	Tue Jun 25 00:40:44 2019	(r349350)
+++ head/contrib/llvm/tools/clang/lib/Driver/ToolChains/Arch/PPC.cpp	Tue Jun 25 02:35:22 2019	(r349351)
@@ -116,7 +116,8 @@ ppc::ReadGOTPtrMode ppc::getPPCReadGOTPtrMode(const Dr
                                               const ArgList &Args) {
   if (Args.getLastArg(options::OPT_msecure_plt))
     return ppc::ReadGOTPtrMode::SecurePlt;
-  if (Triple.isOSOpenBSD())
+  if ((Triple.isOSFreeBSD() && Triple.getOSMajorVersion() >= 13) ||
+      Triple.isOSOpenBSD())
     return ppc::ReadGOTPtrMode::SecurePlt;
   else
     return ppc::ReadGOTPtrMode::Bss;

Modified: head/gnu/usr.bin/cc/cc_tools/Makefile.hdrs
==============================================================================
--- head/gnu/usr.bin/cc/cc_tools/Makefile.hdrs	Tue Jun 25 00:40:44 2019	(r349350)
+++ head/gnu/usr.bin/cc/cc_tools/Makefile.hdrs	Tue Jun 25 02:35:22 2019	(r349351)
@@ -21,6 +21,9 @@ TARGET_INC+=	${GCC_CPU}/${GCC_CPU}.h
 TARGET_INC+=	${GCC_CPU}/unix.h
 TARGET_INC+=	${GCC_CPU}/att.h
 .endif
+.if ${TARGET_CPUARCH} == "powerpc"
+TARGET_INC+=	${GCC_CPU}/secureplt.h
+.endif
 TARGET_INC+=	dbxelf.h
 TARGET_INC+=	elfos-undef.h
 TARGET_INC+=	elfos.h

Modified: head/share/mk/bsd.cpu.mk
==============================================================================
--- head/share/mk/bsd.cpu.mk	Tue Jun 25 00:40:44 2019	(r349350)
+++ head/share/mk/bsd.cpu.mk	Tue Jun 25 02:35:22 2019	(r349351)
@@ -369,6 +369,10 @@ CFLAGS += -mfloat-abi=softfp
 .endif
 .endif
 
+.if ${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "powerpcspe"
+LDFLAGS+= -Wl,--secure-plt
+.endif
+
 .if ${MACHINE_ARCH} == "powerpcspe"
 CFLAGS += -mcpu=8548 -Wa,-me500 -mspe=yes -mabi=spe -mfloat-gprs=double
 .endif


More information about the svn-src-all mailing list