summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
diff options
context:
space:
mode:
authorPaul Robinson <paul.robinson@sony.com>2018-01-09 23:31:48 +0000
committerPaul Robinson <paul.robinson@sony.com>2018-01-09 23:31:48 +0000
commit29f5f987f1b76b5c43310b2062c9f447667a4f80 (patch)
treee19e9304ed5003b04e3a2a2b88c3c833df6a6c1e /llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
parentd72f78e7c8d6dbef66cdbee0292237c68d780160 (diff)
downloadbcm5719-llvm-29f5f987f1b76b5c43310b2062c9f447667a4f80.tar.gz
bcm5719-llvm-29f5f987f1b76b5c43310b2062c9f447667a4f80.zip
[DWARFv5] MC support for MD5 file checksums
Extend .file directive syntax to allow specifying an MD5 checksum for the source file. Emit the checksums in DWARF v5 line tables. llvm-svn: 322134
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
index 576b9a91ddc..28e63c2ae2c 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
@@ -263,9 +263,12 @@ void DwarfUnit::addSectionOffset(DIE &Die, dwarf::Attribute Attribute,
addUInt(Die, Attribute, dwarf::DW_FORM_data4, Integer);
}
-unsigned DwarfTypeUnit::getOrCreateSourceID(StringRef FileName, StringRef DirName) {
- return SplitLineTable ? SplitLineTable->getFile(DirName, FileName)
- : getCU().getOrCreateSourceID(FileName, DirName);
+unsigned DwarfTypeUnit::getOrCreateSourceID(StringRef FileName,
+ StringRef DirName,
+ MD5::MD5Result *Checksum) {
+ return SplitLineTable
+ ? SplitLineTable->getFile(DirName, FileName, Checksum)
+ : getCU().getOrCreateSourceID(FileName, DirName, Checksum);
}
void DwarfUnit::addOpAddress(DIELoc &Die, const MCSymbol *Sym) {
@@ -340,7 +343,7 @@ void DwarfUnit::addSourceLine(DIE &Die, unsigned Line, StringRef File,
if (Line == 0)
return;
- unsigned FileID = getOrCreateSourceID(File, Directory);
+ unsigned FileID = getOrCreateSourceID(File, Directory, nullptr);
assert(FileID && "Invalid file id");
addUInt(Die, dwarf::DW_AT_decl_file, None, FileID);
addUInt(Die, dwarf::DW_AT_decl_line, None, Line);
@@ -1161,9 +1164,10 @@ bool DwarfUnit::applySubprogramDefinitionAttributes(const DISubprogram *SP,
// Look at the Decl's linkage name only if we emitted it.
if (DD->useAllLinkageNames())
DeclLinkageName = SPDecl->getLinkageName();
- unsigned DeclID =
- getOrCreateSourceID(SPDecl->getFilename(), SPDecl->getDirectory());
- unsigned DefID = getOrCreateSourceID(SP->getFilename(), SP->getDirectory());
+ unsigned DeclID = getOrCreateSourceID(SPDecl->getFilename(),
+ SPDecl->getDirectory(), nullptr);
+ unsigned DefID =
+ getOrCreateSourceID(SP->getFilename(), SP->getDirectory(), nullptr);
if (DeclID != DefID)
addUInt(SPDie, dwarf::DW_AT_decl_file, None, DefID);
OpenPOWER on IntegriCloud