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" 10*b0abd489SElliot Goodrich #include "llvm/ADT/StringExtras.h" 11f8170d87SAmy Huang #include "llvm/DebugInfo/PDB/Native/NativeSession.h" 12eb4c8608Sserge-sans-paille #include "llvm/DebugInfo/PDB/Native/PDBFile.h" 13eb4c8608Sserge-sans-paille #include "llvm/DebugInfo/PDB/Native/PDBStringTable.h" 14f8170d87SAmy Huang 15f8170d87SAmy Huang using namespace llvm; 16f8170d87SAmy Huang using namespace llvm::pdb; 17f8170d87SAmy Huang NativeSourceFile(NativeSession & Session,uint32_t FileId,const codeview::FileChecksumEntry & Checksum)18f8170d87SAmy HuangNativeSourceFile::NativeSourceFile(NativeSession &Session, uint32_t FileId, 19f8170d87SAmy Huang const codeview::FileChecksumEntry &Checksum) 20f8170d87SAmy Huang : Session(Session), FileId(FileId), Checksum(Checksum) {} 21f8170d87SAmy Huang getFileName() const22f8170d87SAmy Huangstd::string NativeSourceFile::getFileName() const { 23f8170d87SAmy Huang auto ST = Session.getPDBFile().getStringTable(); 24f8170d87SAmy Huang if (!ST) { 25f8170d87SAmy Huang consumeError(ST.takeError()); 26f8170d87SAmy Huang return ""; 27f8170d87SAmy Huang } 28f8170d87SAmy Huang auto FileName = ST->getStringTable().getString(Checksum.FileNameOffset); 29f8170d87SAmy Huang if (!FileName) { 30f8170d87SAmy Huang consumeError(FileName.takeError()); 31f8170d87SAmy Huang return ""; 32f8170d87SAmy Huang } 33f8170d87SAmy Huang 34f8170d87SAmy Huang return std::string(FileName.get()); 35f8170d87SAmy Huang } 36f8170d87SAmy Huang getUniqueId() const37f8170d87SAmy Huanguint32_t NativeSourceFile::getUniqueId() const { return FileId; } 38f8170d87SAmy Huang getChecksum() const39f8170d87SAmy Huangstd::string NativeSourceFile::getChecksum() const { 40f8170d87SAmy Huang return toStringRef(Checksum.Checksum).str(); 41f8170d87SAmy Huang } 42f8170d87SAmy Huang getChecksumType() const43f8170d87SAmy HuangPDB_Checksum NativeSourceFile::getChecksumType() const { 44f8170d87SAmy Huang return static_cast<PDB_Checksum>(Checksum.Kind); 45f8170d87SAmy Huang } 46f8170d87SAmy Huang 47f8170d87SAmy Huang std::unique_ptr<IPDBEnumChildren<PDBSymbolCompiland>> getCompilands() const48f8170d87SAmy HuangNativeSourceFile::getCompilands() const { 49f8170d87SAmy Huang return nullptr; 50f8170d87SAmy Huang } 51