aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xlib/Target/X86/X86ATTAsmPrinter.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/Target/X86/X86ATTAsmPrinter.cpp b/lib/Target/X86/X86ATTAsmPrinter.cpp
index e344892841..d71bc784df 100755
--- a/lib/Target/X86/X86ATTAsmPrinter.cpp
+++ b/lib/Target/X86/X86ATTAsmPrinter.cpp
@@ -80,8 +80,13 @@ bool X86ATTAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
X86SharedAsmPrinter::decorateName(CurrentFnName, F);
- SwitchToTextSection(getSectionForFunction(*F).c_str(), F);
-
+ // Change GNU linkonce to LLVM linkonce name
+ if (F->hasSection() &&
+ (F->getSection().find(".gnu.linkonce.t") != std::string::npos))
+ SwitchToTextSection(getSectionForFunction(*F).c_str(), NULL);
+ else
+ SwitchToTextSection(getSectionForFunction(*F).c_str(), F);
+
switch (F->getLinkage()) {
default: assert(0 && "Unknown linkage type!");
case Function::InternalLinkage: // Symbols default to internal.