From a59145785719462aec77a5995cde54e0a82f8a5b Mon Sep 17 00:00:00 2001 From: Nate Begeman Date: Tue, 9 Nov 2004 04:01:18 +0000 Subject: [PATCH] Allow hbd to be bugpointable on darwin by fixing common and linkonce codegen git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17637 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Support/ToolRunner.cpp | 1 - lib/Target/PowerPC/PPCAsmPrinter.cpp | 7 ++++--- tools/bugpoint/ToolRunner.cpp | 1 - 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/Support/ToolRunner.cpp b/lib/Support/ToolRunner.cpp index 1584db4ed32..fcbb3c15b5c 100644 --- a/lib/Support/ToolRunner.cpp +++ b/lib/Support/ToolRunner.cpp @@ -411,7 +411,6 @@ int GCC::MakeSharedObject(const std::string &InputFile, FileType fileType, #elif (defined(__POWERPC__) || defined(__ppc__)) && defined(__APPLE__) "-single_module", // link all source files into a single module "-dynamiclib", // `-dynamiclib' for MacOS X/PowerPC - "-fno-common", // allow global vars w/o initializers to live "-undefined", // in data segment, rather than generating "dynamic_lookup", // blocks. dynamic_lookup requires that you set // MACOSX_DEPLOYMENT_TARGET=10.3 in your env. diff --git a/lib/Target/PowerPC/PPCAsmPrinter.cpp b/lib/Target/PowerPC/PPCAsmPrinter.cpp index fd86f1b59cd..62c20219134 100644 --- a/lib/Target/PowerPC/PPCAsmPrinter.cpp +++ b/lib/Target/PowerPC/PPCAsmPrinter.cpp @@ -367,8 +367,8 @@ void PowerPCAsmPrinter::printOp(const MachineOperand &MO, } // External or weakly linked global variables need non-lazily-resolved stubs - if ((GV->isExternal() || GV->hasWeakLinkage()) && - getTM().AddressTaken.count(GV)) { + if ((GV->isExternal() || GV->hasWeakLinkage() || GV->hasLinkOnceLinkage()) + && getTM().AddressTaken.count(GV)) { GVStubs.insert(Name); O << "L" << Name << "$non_lazy_ptr"; return; @@ -472,7 +472,8 @@ bool DarwinAsmPrinter::doFinalization(Module &M) { unsigned Align = TD.getTypeAlignmentShift(C->getType()); if (C->isNullValue() && /* FIXME: Verify correct */ - (I->hasInternalLinkage() || I->hasWeakLinkage())) { + (I->hasInternalLinkage() || I->hasWeakLinkage() || + I->hasLinkOnceLinkage())) { SwitchSection(O, CurSection, ".data"); if (I->hasInternalLinkage()) O << ".lcomm " << name << "," << TD.getTypeSize(C->getType()) diff --git a/tools/bugpoint/ToolRunner.cpp b/tools/bugpoint/ToolRunner.cpp index 1584db4ed32..fcbb3c15b5c 100644 --- a/tools/bugpoint/ToolRunner.cpp +++ b/tools/bugpoint/ToolRunner.cpp @@ -411,7 +411,6 @@ int GCC::MakeSharedObject(const std::string &InputFile, FileType fileType, #elif (defined(__POWERPC__) || defined(__ppc__)) && defined(__APPLE__) "-single_module", // link all source files into a single module "-dynamiclib", // `-dynamiclib' for MacOS X/PowerPC - "-fno-common", // allow global vars w/o initializers to live "-undefined", // in data segment, rather than generating "dynamic_lookup", // blocks. dynamic_lookup requires that you set // MACOSX_DEPLOYMENT_TARGET=10.3 in your env.