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