aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2009-01-06 21:07:30 +0000
committerDevang Patel <dpatel@apple.com>2009-01-06 21:07:30 +0000
commit9304b385967eaa8ba09ac9d59a0cdd17f4483d43 (patch)
treed94151ad4f75a904216458e546171b7af3710f41
parentdd9127da4af6f9e068c264ea886b3baf514392b2 (diff)
downloadexternal_llvm-9304b385967eaa8ba09ac9d59a0cdd17f4483d43.zip
external_llvm-9304b385967eaa8ba09ac9d59a0cdd17f4483d43.tar.gz
external_llvm-9304b385967eaa8ba09ac9d59a0cdd17f4483d43.tar.bz2
Set up DwarfDebug using DebugInfo API.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61822 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/CodeGen/AsmPrinter/DwarfWriter.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/lib/CodeGen/AsmPrinter/DwarfWriter.cpp b/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
index fb0c86b..6e2011e 100644
--- a/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
+++ b/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
@@ -3291,6 +3291,39 @@ public:
delete Values[j];
}
+ /// SetDebugInfo - Create global DIEs and emit initial debug info sections.
+ /// This is inovked by the target AsmPrinter.
+ void SetDebugInfo() {
+ // FIXME - Check if the module has debug info or not.
+ // Create all the compile unit DIEs.
+ ConstructCompileUnits();
+
+ // Create DIEs for each of the externally visible global variables.
+ ConstructGlobalVariableDIEs();
+
+ // Create DIEs for each of the externally visible subprograms.
+ ConstructSubprograms();
+
+ // Prime section data.
+ SectionMap.insert(TAI->getTextSection());
+
+ // Print out .file directives to specify files for .loc directives. These
+ // are printed out early so that they precede any .loc directives.
+ if (TAI->hasDotLocAndDotFile()) {
+ for (unsigned i = 1, e = SrcFiles.size(); i <= e; ++i) {
+ sys::Path FullPath(Directories[SrcFiles[i].getDirectoryID()]);
+ bool AppendOk = FullPath.appendComponent(SrcFiles[i].getName());
+ assert(AppendOk && "Could not append filename to directory!");
+ AppendOk = false;
+ Asm->EmitFile(i, FullPath.toString());
+ Asm->EOL();
+ }
+ }
+
+ // Emit initial sections
+ EmitInitial();
+ }
+
/// SetModuleInfo - Set machine module information when it's known that pass
/// manager has created it. Set by the target AsmPrinter.
void SetModuleInfo(MachineModuleInfo *mmi) {