diff options
| author | Chris Lattner <sabre@nondot.org> | 2010-04-04 05:35:04 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2010-04-04 05:35:04 +0000 |
| commit | 9b13639f45426d2fbaa9656d7905d18c6eb010ab (patch) | |
| tree | 55940b8ce67fa7163b4dc96470a54a3dcb4e65ac | |
| parent | 3bb09768cb6dbd5423164e78ac5b909be4ceef62 (diff) | |
| download | bcm5719-llvm-9b13639f45426d2fbaa9656d7905d18c6eb010ab.tar.gz bcm5719-llvm-9b13639f45426d2fbaa9656d7905d18c6eb010ab.zip | |
mc'ize elf stub printing, convert cygwin stuff to EmitRawText,
which will abort in .o file writing mode.
llvm-svn: 100314
| -rw-r--r-- | llvm/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/llvm/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp b/llvm/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp index ec53a645fed..c706b5f0991 100644 --- a/llvm/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp +++ b/llvm/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp @@ -577,10 +577,11 @@ void X86AsmPrinter::EmitEndOfAsmFile(Module &M) { // Emit type information for external functions for (X86COFFMachineModuleInfo::stub_iterator I = COFFMMI.stub_begin(), E = COFFMMI.stub_end(); I != E; ++I) { - O << "\t.def\t " << I->getKeyData() - << ";\t.scl\t" << COFF::C_EXT - << ";\t.type\t" << (COFF::DT_FCN << COFF::N_BTSHFT) - << ";\t.endef\n"; + OutStreamer.EmitRawText("\t.def\t " + Twine(I->getKeyData()) + + ";\t.scl\t" + Twine(COFF::C_EXT) + + ";\t.type\t" + + Twine(COFF::DT_FCN << COFF::N_BTSHFT) + + ";\t.endef"); } if (Subtarget->isTargetCygMing()) { @@ -605,10 +606,13 @@ void X86AsmPrinter::EmitEndOfAsmFile(Module &M) { true, SectionKind::getMetadata())); for (unsigned i = 0, e = DLLExportedGlobals.size(); i != e; ++i) - O << "\t.ascii \" -export:" << *DLLExportedGlobals[i] << ",data\"\n"; + OutStreamer.EmitRawText("\t.ascii \" -export:" + + Twine(DLLExportedGlobals[i]->getName()) + + ",data\""); for (unsigned i = 0, e = DLLExportedFns.size(); i != e; ++i) - O << "\t.ascii \" -export:" << *DLLExportedFns[i] << "\"\n"; + OutStreamer.EmitRawText("\t.ascii \" -export:" + + Twine(DLLExportedFns[i]->getName()) + "\""); } } } @@ -625,12 +629,11 @@ void X86AsmPrinter::EmitEndOfAsmFile(Module &M) { OutStreamer.SwitchSection(TLOFELF.getDataRelSection()); const TargetData *TD = TM.getTargetData(); - for (unsigned i = 0, e = Stubs.size(); i != e; ++i) - O << *Stubs[i].first << ":\n" - << (TD->getPointerSize() == 8 ? - MAI->getData64bitsDirective() : MAI->getData32bitsDirective()) - << *Stubs[i].second.getPointer() << '\n'; - + for (unsigned i = 0, e = Stubs.size(); i != e; ++i) { + OutStreamer.EmitLabel(Stubs[i].first); + OutStreamer.EmitSymbolValue(Stubs[i].second.getPointer(), + TD->getPointerSize(), 0); + } Stubs.clear(); } } |

