diff options
author | Paul Robinson <paul.robinson@sony.com> | 2018-01-09 23:31:48 +0000 |
---|---|---|
committer | Paul Robinson <paul.robinson@sony.com> | 2018-01-09 23:31:48 +0000 |
commit | 29f5f987f1b76b5c43310b2062c9f447667a4f80 (patch) | |
tree | e19e9304ed5003b04e3a2a2b88c3c833df6a6c1e /llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp | |
parent | d72f78e7c8d6dbef66cdbee0292237c68d780160 (diff) | |
download | bcm5719-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.cpp | 18 |
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); |