From cea9d1d634fd5a952ee51a5e0dc1d5a094d9b6da Mon Sep 17 00:00:00 2001 From: Anton Korobeynikov Date: Sat, 6 Jan 2007 18:24:26 +0000 Subject: [PATCH] gcc often inserts it's own names for sections (e.g. gnu.linkonce.t.FunctionName). Convert them to "normal" LLVM names, otherwise linker won't be able to merge them. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32958 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/X86ATTAsmPrinter.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/Target/X86/X86ATTAsmPrinter.cpp b/lib/Target/X86/X86ATTAsmPrinter.cpp index e3448928416..d71bc784df5 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. -- 2.34.1