1cf16437eSNico Weber //===- NativeSourceFile.cpp - Native line number implementation -*- C++ -*-===// 2f8170d87SAmy Huang // 3f8170d87SAmy Huang // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4f8170d87SAmy Huang // See https://llvm.org/LICENSE.txt for license information. 5f8170d87SAmy Huang // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6f8170d87SAmy Huang // 7f8170d87SAmy Huang //===----------------------------------------------------------------------===// 8f8170d87SAmy Huang 9f8170d87SAmy Huang #include "llvm/DebugInfo/PDB/Native/NativeSourceFile.h" 10f8170d87SAmy Huang #include "llvm/DebugInfo/PDB/Native/NativeSession.h" 11*eb4c8608Sserge-sans-paille #include "llvm/DebugInfo/PDB/Native/PDBFile.h" 12*eb4c8608Sserge-sans-paille #include "llvm/DebugInfo/PDB/Native/PDBStringTable.h" 13f8170d87SAmy Huang 14f8170d87SAmy Huang using namespace llvm; 15f8170d87SAmy Huang using namespace llvm::pdb; 16f8170d87SAmy Huang NativeSourceFile(NativeSession & Session,uint32_t FileId,const codeview::FileChecksumEntry & Checksum)17f8170d87SAmy HuangNativeSourceFile::NativeSourceFile(NativeSession &Session, uint32_t FileId, 18f8170d87SAmy Huang const codeview::FileChecksumEntry &Checksum) 19f8170d87SAmy Huang : Session(Session), FileId(FileId), Checksum(Checksum) {} 20f8170d87SAmy Huang getFileName() const21f8170d87SAmy Huangstd::string NativeSourceFile::getFileName() const { 22f8170d87SAmy Huang auto ST = Session.getPDBFile().getStringTable(); 23f8170d87SAmy Huang if (!ST) { 24f8170d87SAmy Huang consumeError(ST.takeError()); 25f8170d87SAmy Huang return ""; 26f8170d87SAmy Huang } 27f8170d87SAmy Huang auto FileName = ST->getStringTable().getString(Checksum.FileNameOffset); 28f8170d87SAmy Huang if (!FileName) { 29f8170d87SAmy Huang consumeError(FileName.takeError()); 30f8170d87SAmy Huang return ""; 31f8170d87SAmy Huang } 32f8170d87SAmy Huang 33f8170d87SAmy Huang return std::string(FileName.get()); 34f8170d87SAmy Huang } 35f8170d87SAmy Huang getUniqueId() const36f8170d87SAmy Huanguint32_t NativeSourceFile::getUniqueId() const { return FileId; } 37f8170d87SAmy Huang getChecksum() const38f8170d87SAmy Huangstd::string NativeSourceFile::getChecksum() const { 39f8170d87SAmy Huang return toStringRef(Checksum.Checksum).str(); 40f8170d87SAmy Huang } 41f8170d87SAmy Huang getChecksumType() const42f8170d87SAmy HuangPDB_Checksum NativeSourceFile::getChecksumType() const { 43f8170d87SAmy Huang return static_cast<PDB_Checksum>(Checksum.Kind); 44f8170d87SAmy Huang } 45f8170d87SAmy Huang 46f8170d87SAmy Huang std::unique_ptr<IPDBEnumChildren<PDBSymbolCompiland>> getCompilands() const47f8170d87SAmy HuangNativeSourceFile::getCompilands() const { 48f8170d87SAmy Huang return nullptr; 49f8170d87SAmy Huang } 50