From 3b3932ac16c4ce7d21e0801efef9e1c73d4e0c20 Mon Sep 17 00:00:00 2001 From: Jeremy Huddleston Sequoia Date: Sat, 17 Jan 2015 09:03:43 -0800 Subject: [PATCH 1/4] Set the Mach-O CPU Subtype to ppc7400 when targeting Leopard http://llvm.org/bugs/show_bug.cgi?id=18463 Signed-off-by: Jeremy Huddleston Sequoia --- lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git llvm_master/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp macports_master/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp index a405dd70c30..b1b62146d3b 100644 --- llvm_master/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp +++ macports_master/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp @@ -201,16 +201,23 @@ public: // FIXME: This should be in a separate file. namespace { class DarwinPPCAsmBackend : public PPCAsmBackend { + Triple TheTriple; public: - DarwinPPCAsmBackend(const Target &T) : PPCAsmBackend(T, support::big) { } + DarwinPPCAsmBackend(const Target &T, const Triple &TT) : PPCAsmBackend(T, support::big), TheTriple(TT) { } std::unique_ptr createObjectTargetWriter() const override { bool is64 = getPointerSize() == 8; + MachO::CPUSubTypePowerPC CS = MachO::CPU_SUBTYPE_POWERPC_ALL; + + if (TheTriple.isOSDarwin() && !TheTriple.isMacOSXVersionLT(10,5)) { + CS = MachO::CPU_SUBTYPE_POWERPC_7400; + } + return createPPCMachObjectWriter( /*Is64Bit=*/is64, (is64 ? MachO::CPU_TYPE_POWERPC64 : MachO::CPU_TYPE_POWERPC), - MachO::CPU_SUBTYPE_POWERPC_ALL); + CS); } }; @@ -236,7 +243,7 @@ MCAsmBackend *llvm::createPPCAsmBackend(const Target &T, const MCTargetOptions &Options) { const Triple &TT = STI.getTargetTriple(); if (TT.isOSDarwin()) - return new DarwinPPCAsmBackend(T); + return new DarwinPPCAsmBackend(T, TT); uint8_t OSABI = MCELFObjectTargetWriter::getOSABI(TT.getOS()); bool IsLittleEndian = TT.getArch() == Triple::ppc64le; -- 2.17.1 (Apple Git-112)