summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorEric Christopher <echristo@apple.com>2011-11-07 09:18:38 +0000
committerEric Christopher <echristo@apple.com>2011-11-07 09:18:38 +0000
commitd8a8752d5b7f546fd7ebb295366a43b2b76afbd6 (patch)
treec9d7c0199fb9b97cd19f5d60737bcd60573f17f6 /lib
parent6370118b16da30f20b5a68ccb814f3a8b8bc58b6 (diff)
downloadllvm-d8a8752d5b7f546fd7ebb295366a43b2b76afbd6.tar.gz
llvm-d8a8752d5b7f546fd7ebb295366a43b2b76afbd6.tar.bz2
llvm-d8a8752d5b7f546fd7ebb295366a43b2b76afbd6.tar.xz
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')
-rw-r--r--lib/CodeGen/AsmPrinter/DwarfDebug.cpp31
-rw-r--r--lib/CodeGen/AsmPrinter/DwarfDebug.h4
2 files changed, 23 insertions, 12 deletions
diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
index d1e4ca4b5f..037b4ace02 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 d5ce6969e8..7bcc5b4207 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