diff options
| author | Dan Gohman <gohman@apple.com> | 2007-09-24 21:32:18 +0000 |
|---|---|---|
| committer | Dan Gohman <gohman@apple.com> | 2007-09-24 21:32:18 +0000 |
| commit | 0baf84b2e1ac0ba5d847c793e4096d2a2dfadd23 (patch) | |
| tree | 9fc789d9f9f560e87b409a773cdcff913b59b8e7 /llvm/lib/CodeGen | |
| parent | 0cc9d1b93beaa6b39fbb392853350587d70e4afe (diff) | |
| download | bcm5719-llvm-0baf84b2e1ac0ba5d847c793e4096d2a2dfadd23.tar.gz bcm5719-llvm-0baf84b2e1ac0ba5d847c793e4096d2a2dfadd23.zip | |
Add support for emitting .file directives to set up file numbers for
use with .loc directives.
llvm-svn: 42275
Diffstat (limited to 'llvm/lib/CodeGen')
| -rw-r--r-- | llvm/lib/CodeGen/DwarfWriter.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/DwarfWriter.cpp b/llvm/lib/CodeGen/DwarfWriter.cpp index e9cb69214f4..0358332ade5 100644 --- a/llvm/lib/CodeGen/DwarfWriter.cpp +++ b/llvm/lib/CodeGen/DwarfWriter.cpp @@ -28,6 +28,7 @@ #include "llvm/Support/CommandLine.h" #include "llvm/Support/DataTypes.h" #include "llvm/Support/Mangler.h" +#include "llvm/System/Path.h" #include "llvm/Target/TargetAsmInfo.h" #include "llvm/Target/MRegisterInfo.h" #include "llvm/Target/TargetData.h" @@ -1967,6 +1968,19 @@ private: if (didInitial) return; didInitial = true; + // Print out .file directives to specify files for .loc directives. + if (TAI->hasDotLocAndDotFile()) { + const UniqueVector<SourceFileInfo> &SourceFiles = MMI->getSourceFiles(); + const UniqueVector<std::string> &Directories = MMI->getDirectories(); + for (unsigned i = 1, e = SourceFiles.size(); i <= e; ++i) { + sys::Path FullPath(Directories[SourceFiles[i].getDirectoryID()]); + bool AppendOk = FullPath.appendComponent(SourceFiles[i].getName()); + assert(AppendOk && "Could not append filename to directory!"); + Asm->EmitFile(i, FullPath.toString()); + Asm->EOL(); + } + } + // Dwarf sections base addresses. if (TAI->doesDwarfRequireFrameSection()) { Asm->SwitchToDataSection(TAI->getDwarfFrameSection()); |

