--- a/lib/Target/PowerPC/PPCSubtarget.cpp +++ b/lib/Target/PowerPC/PPCSubtarget.cpp @@ -138,6 +138,10 @@ if (isDarwin()) HasLazyResolverStubs = true; + // Set up musl-specific properties. + if (TargetTriple.getEnvironment() == Triple::Musl) + SecurePlt = true; + if (HasSPE && IsPPC64) report_fatal_error( "SPE is only supported for 32-bit targets.\n", false); if (HasSPE && (HasAltivec || HasQPX || HasVSX || HasFPU)) diff --git a/lib/Target/PowerPC/PPCTargetMachine.cpp b/lib/Target/PowerPC/PPCTargetMachine.cpp index c583fba8cab..6a9eedf89c5 100644 --- a/lib/Target/PowerPC/PPCTargetMachine.cpp +++ b/lib/Target/PowerPC/PPCTargetMachine.cpp @@ -222,6 +222,10 @@ static Reloc::Model getEffectiveRelocModel(const Triple &TT, if (TT.getArch() == Triple::ppc64) return Reloc::PIC_; + // musl needs SecurePlt, which depends on PIC. + if (TT.getEnvironment() == Triple::Musl) + return Reloc::PIC_; + // Rest are static by default. return Reloc::Static; }