On Sat, 16 Mar 2019 18:35:30 -0400
Brad Smith <b...@comstyle.com> wrote:

> Bring in some patches from upstream..
> 
> Make sure PowerPC backend is in sync with the frontend and enable Secure PLT
> support their too.

Hours ago, my PowerPC machine finished a build of devel/llvm.  I tried
to test your diff and my local changes at the same time, but I might
have removed your patch to lib/Target/PowerPC/PPCSubtarget.cpp when I
added my patch to the same file.  If your diff gets into CVS, I will
do another build of devel/llvm.  A build takes about 29 hours.

My patches for PowerPC try to fix compatibility with GCC when
returning a small struct (40736) and enable -fomit-frame-pointer by
default (41094), but I need more time to test them.

- https://bugs.llvm.org/show_bug.cgi?id=40736
- https://bugs.llvm.org/show_bug.cgi?id=41094

> Index: Makefile
> ===================================================================
> RCS file: /home/cvs/ports/devel/llvm/Makefile,v
> retrieving revision 1.216
> diff -u -p -u -p -r1.216 Makefile
> --- Makefile  9 Mar 2019 06:18:11 -0000       1.216
> +++ Makefile  10 Mar 2019 21:39:41 -0000
> @@ -20,7 +20,7 @@ PKGSPEC-main =      llvm-=${LLVM_V}
>  PKGNAME-main =       llvm-${LLVM_V}
>  PKGNAME-python =     py-llvm-${LLVM_V}
>  PKGNAME-lldb =       lldb-${LLVM_V}
> -REVISION-main =      9
> +REVISION-main =      10
>  REVISION-lldb =      0
>  CATEGORIES = devel
>  DISTFILES =  llvm-${LLVM_V}.src${EXTRACT_SUFX} \
> Index: patches/patch-lib_Target_PowerPC_PPCSubtarget_cpp
> ===================================================================
> RCS file: patches/patch-lib_Target_PowerPC_PPCSubtarget_cpp
> diff -N patches/patch-lib_Target_PowerPC_PPCSubtarget_cpp
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-lib_Target_PowerPC_PPCSubtarget_cpp 10 Mar 2019 22:12:43 
> -0000
> @@ -0,0 +1,18 @@
> +$OpenBSD$
> +
> +Default to Secure PLT on PPC for NetBSD and OpenBSD.
> +This matches the default settings of clang.
> +
> +Index: lib/Target/PowerPC/PPCSubtarget.cpp
> +--- lib/Target/PowerPC/PPCSubtarget.cpp.orig
> ++++ lib/Target/PowerPC/PPCSubtarget.cpp
> +@@ -138,6 +138,9 @@ void PPCSubtarget::initSubtargetFeatures(StringRef CPU
> +   if (isDarwin())
> +     HasLazyResolverStubs = true;
> + 
> ++  if (TargetTriple.isOSNetBSD() || TargetTriple.isOSOpenBSD())
> ++    SecurePlt = true;
> ++
> +   if (HasSPE && IsPPC64)
> +     report_fatal_error( "SPE is only supported for 32-bit targets.\n", 
> false);
> +   if (HasSPE && (HasAltivec || HasQPX || HasVSX || HasFPU))
> Index: patches/patch-tools_clang_lib_Driver_ToolChains_Arch_PPC_cpp
> ===================================================================
> RCS file: patches/patch-tools_clang_lib_Driver_ToolChains_Arch_PPC_cpp
> diff -N patches/patch-tools_clang_lib_Driver_ToolChains_Arch_PPC_cpp
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-tools_clang_lib_Driver_ToolChains_Arch_PPC_cpp      10 Mar 
> 2019 21:47:14 -0000
> @@ -0,0 +1,16 @@
> +$OpenBSD$
> +
> +Use Secure PLT as default on NetBSD/PowerPC.
> +
> +Index: tools/clang/lib/Driver/ToolChains/Arch/PPC.cpp
> +--- tools/clang/lib/Driver/ToolChains/Arch/PPC.cpp.orig
> ++++ tools/clang/lib/Driver/ToolChains/Arch/PPC.cpp
> +@@ -116,7 +116,7 @@ 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.isOSNetBSD() || Triple.isOSOpenBSD())
> +     return ppc::ReadGOTPtrMode::SecurePlt;
> +   else
> +     return ppc::ReadGOTPtrMode::Bss;
> 


-- 
George Koehler <kern...@gmail.com>

Reply via email to