121473f7bSZachary Turner //===- PDBSymbolCompiland.cpp - compiland details --------*- C++ -*-===// 221473f7bSZachary Turner // 321473f7bSZachary Turner // The LLVM Compiler Infrastructure 421473f7bSZachary Turner // 521473f7bSZachary Turner // This file is distributed under the University of Illinois Open Source 621473f7bSZachary Turner // License. See LICENSE.TXT for details. 721473f7bSZachary Turner // 821473f7bSZachary Turner //===----------------------------------------------------------------------===// 921473f7bSZachary Turner 1052c9f881SZachary Turner #include "llvm/DebugInfo/PDB/PDBSymbolCompiland.h" 11*43ec3af9SZachary Turner #include "llvm/DebugInfo/PDB/PDBSymbolCompilandEnv.h" 1252c9f881SZachary Turner 139a818ad1SZachary Turner #include "llvm/DebugInfo/PDB/PDBSymDumper.h" 1452c9f881SZachary Turner 1571f308adSChandler Carruth #include <utility> 1621473f7bSZachary Turner 1721473f7bSZachary Turner using namespace llvm; 1821473f7bSZachary Turner 1998571ed9SZachary Turner PDBSymbolCompiland::PDBSymbolCompiland(const IPDBSession &PDBSession, 20bae16b3fSZachary Turner std::unique_ptr<IPDBRawSymbol> Symbol) 21bae16b3fSZachary Turner : PDBSymbol(PDBSession, std::move(Symbol)) {} 2221473f7bSZachary Turner 23b52d08d9SZachary Turner void PDBSymbolCompiland::dump(PDBSymDumper &Dumper) const { 24b52d08d9SZachary Turner Dumper.dump(*this); 2521473f7bSZachary Turner } 26*43ec3af9SZachary Turner 27*43ec3af9SZachary Turner std::string PDBSymbolCompiland::getSourceFileName() const 28*43ec3af9SZachary Turner { 29*43ec3af9SZachary Turner std::string Result = RawSymbol->getSourceFileName(); 30*43ec3af9SZachary Turner if (!Result.empty()) 31*43ec3af9SZachary Turner return Result; 32*43ec3af9SZachary Turner auto Envs = findAllChildren<PDBSymbolCompilandEnv>(); 33*43ec3af9SZachary Turner if (!Envs) 34*43ec3af9SZachary Turner return std::string(); 35*43ec3af9SZachary Turner while (auto Env = Envs->getNext()) { 36*43ec3af9SZachary Turner std::string Var = Env->getName(); 37*43ec3af9SZachary Turner if (Var != "src") 38*43ec3af9SZachary Turner continue; 39*43ec3af9SZachary Turner std::string Value = Env->getValue(); 40*43ec3af9SZachary Turner return Value; 41*43ec3af9SZachary Turner } 42*43ec3af9SZachary Turner return std::string(); 43*43ec3af9SZachary Turner } 44