From ffba5fafb60bffa1b54ab1c5e82bc7dfbdcce90b Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Tue, 9 Mar 2010 00:43:34 +0000 Subject: Print blank line and clear stubs vector. llvm-svn: 98019 --- llvm/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'llvm/lib') diff --git a/llvm/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp b/llvm/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp index 0d52a0c703a..a18008e97c4 100644 --- a/llvm/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp +++ b/llvm/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp @@ -1132,8 +1132,16 @@ void ARMAsmPrinter::EmitEndOfAsmFile(Module &M) { // L_foo$stub: OutStreamer.EmitLabel(Stubs[i].first); // .indirect_symbol _foo - OutStreamer.EmitSymbolAttribute(Stubs[i].second, MCSA_IndirectSymbol); - OutStreamer.EmitIntValue(0, 4/*size*/, 0/*addrspace*/); + MCSymbol *MCSym = Stubs[i].second; + OutStreamer.EmitSymbolAttribute(MCSym, MCSA_IndirectSymbol); + + if (MCSym->isUndefined()) + // External to current translation unit. + OutStreamer.EmitIntValue(0, 4/*size*/, 0/*addrspace*/); + else + // Internal to current translation unit. + OutStreamer.EmitValue(MCSymbolRefExpr::Create(MCSym, OutContext), + 4/*size*/, 0/*addrspace*/); } Stubs.clear(); @@ -1152,6 +1160,9 @@ void ARMAsmPrinter::EmitEndOfAsmFile(Module &M) { OutContext), 4/*size*/, 0/*addrspace*/); } + + Stubs.clear(); + OutStreamer.AddBlankLine(); } // Funny Darwin hack: This flag tells the linker that no global symbols -- cgit v1.2.3