--- a/lib/Target/PowerPC/PPCSubtarget.cpp +++ b/lib/Target/PowerPC/PPCSubtarget.cpp @@ -145,8 +145,7 @@ void PPCSubtarget::initSubtargetFeatures(StringRef CPU, StringRef FS) { if (isDarwin()) HasLazyResolverStubs = true; - if (TargetTriple.isOSNetBSD() || TargetTriple.isOSOpenBSD() || - TargetTriple.isMusl()) + if (TargetTriple.isOSNetBSD() || TargetTriple.isOSOpenBSD() || isTargetLinux()) SecurePlt = true; if (HasSPE && IsPPC64) --- a/lib/Target/PowerPC/PPCTargetMachine.cpp +++ b/lib/Target/PowerPC/PPCTargetMachine.cpp @@ -234,6 +234,10 @@ static Reloc::Model getEffectiveRelocModel(const Triple &TT, if (TT.getArch() == Triple::ppc64) return Reloc::PIC_; + // We force SecurePlt on 32-bit ppc linux which requires PIC + if (TT.isOSLinux() && (TT.getArch() == Triple::ppc)) + return Reloc::PIC_; + // Rest are static by default. return Reloc::Static; }