From: Eric Christopher Date: Mon, 7 Nov 2011 09:18:38 +0000 (+0000) Subject: Expose a way to get the beginning of the dwarf string section. X-Git-Tag: android-x86-6.0-r1~263^2~325 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=d8a8752d5b7f546fd7ebb295366a43b2b76afbd6;p=android-x86%2Fexternal-llvm.git Expose a way to get the beginning of the dwarf string section. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143920 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index d1e4ca4b5fa..037b4ace026 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -136,6 +136,18 @@ DwarfDebug::DwarfDebug(AsmPrinter *A, Module *M) DwarfDebug::~DwarfDebug() { } +/// EmitSectionSym - Switch to the specified MCSection and emit an assembler +/// temporary label to it if SymbolStem is specified. +static MCSymbol *EmitSectionSym(AsmPrinter *Asm, const MCSection *Section, + const char *SymbolStem = 0) { + Asm->OutStreamer.SwitchSection(Section); + if (!SymbolStem) return 0; + + MCSymbol *TmpSym = Asm->GetTempSymbol(SymbolStem); + Asm->OutStreamer.EmitLabel(TmpSym); + return TmpSym; +} + MCSymbol *DwarfDebug::getStringPool() { return Asm->GetTempSymbol("section_str"); } @@ -148,6 +160,13 @@ MCSymbol *DwarfDebug::getStringPoolEntry(StringRef Str) { return Entry.first = Asm->GetTempSymbol("string", Entry.second); } +MCSymbol *DwarfDebug::getDwarfStrSectionSym(void) { + if (DwarfStrSectionSym) return DwarfStrSectionSym; + DwarfStrSectionSym = + EmitSectionSym(Asm, Asm->getObjFileLowering().getDwarfStrSection(), + "section_str"); + return DwarfStrSectionSym; +} /// assignAbbrevNumber - Define a unique number for the abbreviation. /// @@ -1465,18 +1484,6 @@ void DwarfDebug::computeSizeAndOffsets() { } } -/// EmitSectionSym - Switch to the specified MCSection and emit an assembler -/// temporary label to it if SymbolStem is specified. -static MCSymbol *EmitSectionSym(AsmPrinter *Asm, const MCSection *Section, - const char *SymbolStem = 0) { - Asm->OutStreamer.SwitchSection(Section); - if (!SymbolStem) return 0; - - MCSymbol *TmpSym = Asm->GetTempSymbol(SymbolStem); - Asm->OutStreamer.EmitLabel(TmpSym); - return TmpSym; -} - /// EmitSectionLabels - Emit initial Dwarf sections with a label at /// the start of each one. void DwarfDebug::EmitSectionLabels() { diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.h b/lib/CodeGen/AsmPrinter/DwarfDebug.h index d5ce6969e8b..7bcc5b42074 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.h +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.h @@ -513,6 +513,10 @@ public: /// getStringPoolEntry - returns an entry into the string pool with the given /// string text. MCSymbol *getStringPoolEntry(StringRef Str); + + /// getDwarfStrSectionSym - returns the symbol that starts the dwarf string + /// section. + MCSymbol *getDwarfStrSectionSym(); }; } // End of namespace llvm