diff options
author | Eric Christopher <echristo@apple.com> | 2011-11-07 09:18:38 +0000 |
---|---|---|
committer | Eric Christopher <echristo@apple.com> | 2011-11-07 09:18:38 +0000 |
commit | d8a8752d5b7f546fd7ebb295366a43b2b76afbd6 (patch) | |
tree | c9d7c0199fb9b97cd19f5d60737bcd60573f17f6 /lib/CodeGen/AsmPrinter | |
parent | 6370118b16da30f20b5a68ccb814f3a8b8bc58b6 (diff) | |
download | external_llvm-d8a8752d5b7f546fd7ebb295366a43b2b76afbd6.zip external_llvm-d8a8752d5b7f546fd7ebb295366a43b2b76afbd6.tar.gz external_llvm-d8a8752d5b7f546fd7ebb295366a43b2b76afbd6.tar.bz2 |
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
Diffstat (limited to 'lib/CodeGen/AsmPrinter')
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 31 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfDebug.h | 4 |
2 files changed, 23 insertions, 12 deletions
diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index d1e4ca4..037b4ac 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 d5ce696..7bcc5b4 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 |