124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- SymbolVendor.mm -----------------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Symbol/SymbolVendor.h" 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C Includes 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C++ Includes 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Other libraries and framework includes 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Project includes 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/Module.h" 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/PluginManager.h" 1849ce8969d3154e1560106cfe530444c09410f217Greg Clayton#include "lldb/Core/Stream.h" 1949ce8969d3154e1560106cfe530444c09410f217Greg Clayton#include "lldb/Symbol/CompileUnit.h" 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Symbol/ObjectFile.h" 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Symbol/SymbolFile.h" 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerusing namespace lldb; 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerusing namespace lldb_private; 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//---------------------------------------------------------------------- 2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// FindPlugin 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Platforms can register a callback to use when creating symbol 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// vendors to allow for complex debug information file setups, and to 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// also allow for finding separate debug information files. 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//---------------------------------------------------------------------- 3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSymbolVendor* 35188091899842b140313b54e097f16efbe165c998Greg ClaytonSymbolVendor::FindPlugin (const lldb::ModuleSP &module_sp, lldb_private::Stream *feedback_strm) 3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 37102b2c2681c9a830afe25bfea35557421905e42cGreg Clayton std::unique_ptr<SymbolVendor> instance_ap; 3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SymbolVendorCreateInstance create_callback; 39a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain 4036da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton for (size_t idx = 0; (create_callback = PluginManager::GetSymbolVendorCreateCallbackAtIndex(idx)) != NULL; ++idx) 4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 42188091899842b140313b54e097f16efbe165c998Greg Clayton instance_ap.reset(create_callback(module_sp, feedback_strm)); 4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (instance_ap.get()) 4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return instance_ap.release(); 4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // The default implementation just tries to create debug information using the 5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner // file representation for the module. 513508c387c3f0c9ecc439d98048fd7694d41bab1bGreg Clayton instance_ap.reset(new SymbolVendor(module_sp)); 5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (instance_ap.get()) 53e40b6424d9e49306392bec4b44060da36414c382Greg Clayton { 543508c387c3f0c9ecc439d98048fd7694d41bab1bGreg Clayton ObjectFile *objfile = module_sp->GetObjectFile(); 55e40b6424d9e49306392bec4b44060da36414c382Greg Clayton if (objfile) 5613d24fb1817faa7ccc4cfd799113ba1a2b8968ebGreg Clayton instance_ap->AddSymbolFileRepresentation(objfile->shared_from_this()); 57e40b6424d9e49306392bec4b44060da36414c382Greg Clayton } 5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return instance_ap.release(); 5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//---------------------------------------------------------------------- 6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// SymbolVendor constructor 6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//---------------------------------------------------------------------- 643508c387c3f0c9ecc439d98048fd7694d41bab1bGreg ClaytonSymbolVendor::SymbolVendor(const lldb::ModuleSP &module_sp) : 653508c387c3f0c9ecc439d98048fd7694d41bab1bGreg Clayton ModuleChild (module_sp), 6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_type_list(), 6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_compile_units(), 6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_sym_file_ap() 6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//---------------------------------------------------------------------- 7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Destructor 7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//---------------------------------------------------------------------- 7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSymbolVendor::~SymbolVendor() 7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//---------------------------------------------------------------------- 80a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain// Add a represention given an object file. 8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//---------------------------------------------------------------------- 8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnervoid 8331ad9cc8eab4d183ebfc5a0ef0bb952cacb1bc50Jim InghamSymbolVendor::AddSymbolFileRepresentation(const ObjectFileSP &objfile_sp) 8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 859482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton ModuleSP module_sp(GetModule()); 869482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (module_sp) 87e40b6424d9e49306392bec4b44060da36414c382Greg Clayton { 889482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton lldb_private::Mutex::Locker locker(module_sp->GetMutex()); 899482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (objfile_sp) 909482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton { 919482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton m_objfile_sp = objfile_sp; 929482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton m_sym_file_ap.reset(SymbolFile::FindPlugin(objfile_sp.get())); 939482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton } 94e40b6424d9e49306392bec4b44060da36414c382Greg Clayton } 9524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 9624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 9724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool 9836da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg ClaytonSymbolVendor::SetCompileUnitAtIndex (size_t idx, const CompUnitSP &cu_sp) 9924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 1009482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton ModuleSP module_sp(GetModule()); 1019482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (module_sp) 10224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 1039482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton lldb_private::Mutex::Locker locker(module_sp->GetMutex()); 10436da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton const size_t num_compile_units = GetNumCompileUnits(); 1059482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (idx < num_compile_units) 1069482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton { 1079482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton // Fire off an assertion if this compile unit already exists for now. 1089482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton // The partial parsing should take care of only setting the compile 1099482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton // unit once, so if this assertion fails, we need to make sure that 1109482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton // we don't have a race condition, or have a second parse of the same 1119482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton // compile unit. 1129482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton assert(m_compile_units[idx].get() == NULL); 1130be1edd34ff46e017b1b973c5a57e3de9f613bafGreg Clayton m_compile_units[idx] = cu_sp; 1149482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton return true; 1159482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton } 1160be1edd34ff46e017b1b973c5a57e3de9f613bafGreg Clayton else 1170be1edd34ff46e017b1b973c5a57e3de9f613bafGreg Clayton { 1180be1edd34ff46e017b1b973c5a57e3de9f613bafGreg Clayton // This should NOT happen, and if it does, we want to crash and know 1190be1edd34ff46e017b1b973c5a57e3de9f613bafGreg Clayton // about it 1200be1edd34ff46e017b1b973c5a57e3de9f613bafGreg Clayton assert (idx < num_compile_units); 1210be1edd34ff46e017b1b973c5a57e3de9f613bafGreg Clayton } 12224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 12324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return false; 12424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 12524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 12636da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Claytonsize_t 12724943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSymbolVendor::GetNumCompileUnits() 12824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 1299482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton ModuleSP module_sp(GetModule()); 1309482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (module_sp) 13124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 1329482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton lldb_private::Mutex::Locker locker(module_sp->GetMutex()); 1339482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (m_compile_units.empty()) 13424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 1359482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (m_sym_file_ap.get()) 1369482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton { 1379482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton // Resize our array of compile unit shared pointers -- which will 1389482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton // each remain NULL until someone asks for the actual compile unit 1399482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton // information. When this happens, the symbol file will be asked 1409482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton // to parse this compile unit information. 1419482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton m_compile_units.resize(m_sym_file_ap->GetNumCompileUnits()); 1429482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton } 14324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 14424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 14524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return m_compile_units.size(); 14624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 14724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 14849ce8969d3154e1560106cfe530444c09410f217Greg Claytonlldb::LanguageType 14949ce8969d3154e1560106cfe530444c09410f217Greg ClaytonSymbolVendor::ParseCompileUnitLanguage (const SymbolContext& sc) 15049ce8969d3154e1560106cfe530444c09410f217Greg Clayton{ 15149ce8969d3154e1560106cfe530444c09410f217Greg Clayton ModuleSP module_sp(GetModule()); 15249ce8969d3154e1560106cfe530444c09410f217Greg Clayton if (module_sp) 15349ce8969d3154e1560106cfe530444c09410f217Greg Clayton { 15449ce8969d3154e1560106cfe530444c09410f217Greg Clayton lldb_private::Mutex::Locker locker(module_sp->GetMutex()); 15549ce8969d3154e1560106cfe530444c09410f217Greg Clayton if (m_sym_file_ap.get()) 15649ce8969d3154e1560106cfe530444c09410f217Greg Clayton return m_sym_file_ap->ParseCompileUnitLanguage(sc); 15749ce8969d3154e1560106cfe530444c09410f217Greg Clayton } 15849ce8969d3154e1560106cfe530444c09410f217Greg Clayton return eLanguageTypeUnknown; 15949ce8969d3154e1560106cfe530444c09410f217Greg Clayton} 16049ce8969d3154e1560106cfe530444c09410f217Greg Clayton 16149ce8969d3154e1560106cfe530444c09410f217Greg Clayton 16224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnersize_t 16324943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSymbolVendor::ParseCompileUnitFunctions (const SymbolContext &sc) 16424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 1659482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton ModuleSP module_sp(GetModule()); 1669482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (module_sp) 1679482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton { 1689482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton lldb_private::Mutex::Locker locker(module_sp->GetMutex()); 1699482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (m_sym_file_ap.get()) 1709482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton return m_sym_file_ap->ParseCompileUnitFunctions(sc); 1719482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton } 17224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return 0; 17324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 17424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 17524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool 17624943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSymbolVendor::ParseCompileUnitLineTable (const SymbolContext &sc) 17724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 1789482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton ModuleSP module_sp(GetModule()); 1799482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (module_sp) 1809482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton { 1819482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton lldb_private::Mutex::Locker locker(module_sp->GetMutex()); 1829482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (m_sym_file_ap.get()) 1839482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton return m_sym_file_ap->ParseCompileUnitLineTable(sc); 1849482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton } 18524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return false; 18624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 18724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 18824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool 18924943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSymbolVendor::ParseCompileUnitSupportFiles (const SymbolContext& sc, FileSpecList& support_files) 19024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 1919482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton ModuleSP module_sp(GetModule()); 1929482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (module_sp) 1939482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton { 1949482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton lldb_private::Mutex::Locker locker(module_sp->GetMutex()); 1959482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (m_sym_file_ap.get()) 1969482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton return m_sym_file_ap->ParseCompileUnitSupportFiles(sc, support_files); 1979482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton } 19824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return false; 19924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 20024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 20124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnersize_t 20224943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSymbolVendor::ParseFunctionBlocks (const SymbolContext &sc) 20324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2049482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton ModuleSP module_sp(GetModule()); 2059482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (module_sp) 2069482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton { 2079482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton lldb_private::Mutex::Locker locker(module_sp->GetMutex()); 2089482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (m_sym_file_ap.get()) 2099482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton return m_sym_file_ap->ParseFunctionBlocks(sc); 2109482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton } 21124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return 0; 21224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 21324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 21424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnersize_t 21524943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSymbolVendor::ParseTypes (const SymbolContext &sc) 21624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2179482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton ModuleSP module_sp(GetModule()); 2189482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (module_sp) 2199482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton { 2209482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton lldb_private::Mutex::Locker locker(module_sp->GetMutex()); 2219482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (m_sym_file_ap.get()) 2229482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton return m_sym_file_ap->ParseTypes(sc); 2239482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton } 22424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return 0; 22524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 22624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 22724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnersize_t 22824943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSymbolVendor::ParseVariablesForContext (const SymbolContext& sc) 22924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2309482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton ModuleSP module_sp(GetModule()); 2319482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (module_sp) 2329482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton { 2339482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton lldb_private::Mutex::Locker locker(module_sp->GetMutex()); 2349482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (m_sym_file_ap.get()) 2359482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton return m_sym_file_ap->ParseVariablesForContext(sc); 2369482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton } 23724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return 0; 23824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 23924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 24024943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerType* 24124943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSymbolVendor::ResolveTypeUID(lldb::user_id_t type_uid) 24224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2439482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton ModuleSP module_sp(GetModule()); 2449482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (module_sp) 2459482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton { 2469482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton lldb_private::Mutex::Locker locker(module_sp->GetMutex()); 2479482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (m_sym_file_ap.get()) 2489482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton return m_sym_file_ap->ResolveTypeUID(type_uid); 2499482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton } 25024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return NULL; 25124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 25224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 25324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 25424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattneruint32_t 25524943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSymbolVendor::ResolveSymbolContext (const Address& so_addr, uint32_t resolve_scope, SymbolContext& sc) 25624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2579482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton ModuleSP module_sp(GetModule()); 2589482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (module_sp) 2599482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton { 2609482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton lldb_private::Mutex::Locker locker(module_sp->GetMutex()); 2619482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (m_sym_file_ap.get()) 2629482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton return m_sym_file_ap->ResolveSymbolContext(so_addr, resolve_scope, sc); 2639482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton } 26424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return 0; 26524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 26624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 26724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattneruint32_t 26824943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSymbolVendor::ResolveSymbolContext (const FileSpec& file_spec, uint32_t line, bool check_inlines, uint32_t resolve_scope, SymbolContextList& sc_list) 26924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2709482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton ModuleSP module_sp(GetModule()); 2719482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (module_sp) 2729482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton { 2739482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton lldb_private::Mutex::Locker locker(module_sp->GetMutex()); 2749482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (m_sym_file_ap.get()) 2759482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton return m_sym_file_ap->ResolveSymbolContext(file_spec, line, check_inlines, resolve_scope, sc_list); 2769482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton } 27724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return 0; 27824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 27924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 28036da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Claytonsize_t 28136da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg ClaytonSymbolVendor::FindGlobalVariables (const ConstString &name, const ClangNamespaceDecl *namespace_decl, bool append, size_t max_matches, VariableList& variables) 28224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2839482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton ModuleSP module_sp(GetModule()); 2849482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (module_sp) 2859482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton { 2869482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton lldb_private::Mutex::Locker locker(module_sp->GetMutex()); 2879482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (m_sym_file_ap.get()) 2889482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton return m_sym_file_ap->FindGlobalVariables(name, namespace_decl, append, max_matches, variables); 2899482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton } 29024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return 0; 29124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 29224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 29336da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Claytonsize_t 29436da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg ClaytonSymbolVendor::FindGlobalVariables (const RegularExpression& regex, bool append, size_t max_matches, VariableList& variables) 29524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2969482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton ModuleSP module_sp(GetModule()); 2979482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (module_sp) 2989482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton { 2999482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton lldb_private::Mutex::Locker locker(module_sp->GetMutex()); 3009482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (m_sym_file_ap.get()) 3019482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton return m_sym_file_ap->FindGlobalVariables(regex, append, max_matches, variables); 3029482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton } 30324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return 0; 30424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 30524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 30636da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Claytonsize_t 307302d78c71902398ce1f422bd09216dd53a6abb88Sean CallananSymbolVendor::FindFunctions(const ConstString &name, const ClangNamespaceDecl *namespace_decl, uint32_t name_type_mask, bool include_inlines, bool append, SymbolContextList& sc_list) 30824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 3099482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton ModuleSP module_sp(GetModule()); 3109482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (module_sp) 3119482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton { 3129482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton lldb_private::Mutex::Locker locker(module_sp->GetMutex()); 3139482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (m_sym_file_ap.get()) 3149482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton return m_sym_file_ap->FindFunctions(name, namespace_decl, name_type_mask, include_inlines, append, sc_list); 3159482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton } 31624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return 0; 31724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 31824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 31936da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Claytonsize_t 320302d78c71902398ce1f422bd09216dd53a6abb88Sean CallananSymbolVendor::FindFunctions(const RegularExpression& regex, bool include_inlines, bool append, SymbolContextList& sc_list) 32124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 3229482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton ModuleSP module_sp(GetModule()); 3239482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (module_sp) 3249482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton { 3259482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton lldb_private::Mutex::Locker locker(module_sp->GetMutex()); 3269482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (m_sym_file_ap.get()) 3279482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton return m_sym_file_ap->FindFunctions(regex, include_inlines, append, sc_list); 3289482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton } 32924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return 0; 33024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 33124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 33224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 33336da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Claytonsize_t 33436da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg ClaytonSymbolVendor::FindTypes (const SymbolContext& sc, const ConstString &name, const ClangNamespaceDecl *namespace_decl, bool append, size_t max_matches, TypeList& types) 335960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton{ 3369482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton ModuleSP module_sp(GetModule()); 3379482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (module_sp) 3389482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton { 3399482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton lldb_private::Mutex::Locker locker(module_sp->GetMutex()); 3409482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (m_sym_file_ap.get()) 3419482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton return m_sym_file_ap->FindTypes(sc, name, namespace_decl, append, max_matches, types); 3429482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton } 343960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton if (!append) 344960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton types.Clear(); 345960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton return 0; 346960d6a40711f05effe6fcc5b66f0952450f79ea2Greg Clayton} 3476916e358c9725b75ed91f31236c147f26c9af10eGreg Clayton 348a8b56238ce138e70433a0ce0b4218c9257beae38Greg Claytonsize_t 349a8b56238ce138e70433a0ce0b4218c9257beae38Greg ClaytonSymbolVendor::GetTypes (SymbolContextScope *sc_scope, 350a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton uint32_t type_mask, 351a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton lldb_private::TypeList &type_list) 352a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton{ 353a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton ModuleSP module_sp(GetModule()); 354a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton if (module_sp) 355a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton { 356a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton lldb_private::Mutex::Locker locker(module_sp->GetMutex()); 357a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton if (m_sym_file_ap.get()) 358a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton return m_sym_file_ap->GetTypes (sc_scope, type_mask, type_list); 359a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton } 360a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton return 0; 361a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton} 362a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton 3636916e358c9725b75ed91f31236c147f26c9af10eGreg ClaytonClangNamespaceDecl 3640fcec13c6639ab49216fa9447b25888b7bc9ff59Sean CallananSymbolVendor::FindNamespace(const SymbolContext& sc, const ConstString &name, const ClangNamespaceDecl *parent_namespace_decl) 3656916e358c9725b75ed91f31236c147f26c9af10eGreg Clayton{ 3666916e358c9725b75ed91f31236c147f26c9af10eGreg Clayton ClangNamespaceDecl namespace_decl; 3679482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton ModuleSP module_sp(GetModule()); 3689482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (module_sp) 3699482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton { 3709482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton lldb_private::Mutex::Locker locker(module_sp->GetMutex()); 3719482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (m_sym_file_ap.get()) 3729482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton namespace_decl = m_sym_file_ap->FindNamespace (sc, name, parent_namespace_decl); 3739482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton } 3746916e358c9725b75ed91f31236c147f26c9af10eGreg Clayton return namespace_decl; 3756916e358c9725b75ed91f31236c147f26c9af10eGreg Clayton} 37624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 37724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnervoid 37824943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSymbolVendor::Dump(Stream *s) 37924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 3809482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton ModuleSP module_sp(GetModule()); 3819482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (module_sp) 38224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 3839482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton bool show_context = false; 3849482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton 3859482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton s->Printf("%p: ", this); 3869482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton s->Indent(); 3879482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton s->PutCString("SymbolVendor"); 3889482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (m_sym_file_ap.get()) 38924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 3909482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton ObjectFile *objfile = m_sym_file_ap->GetObjectFile(); 3919482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (objfile) 39224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 3939482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton const FileSpec &objfile_file_spec = objfile->GetFileSpec(); 3949482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (objfile_file_spec) 3959482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton { 3969482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton s->PutCString(" ("); 3979482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton objfile_file_spec.Dump(s); 3989482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton s->PutChar(')'); 3999482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton } 40024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 40124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 4029482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton s->EOL(); 4039482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton s->IndentMore(); 4049482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton m_type_list.Dump(s, show_context); 40524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4069482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton CompileUnitConstIter cu_pos, cu_end; 4079482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton cu_end = m_compile_units.end(); 4089482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton for (cu_pos = m_compile_units.begin(); cu_pos != cu_end; ++cu_pos) 4099482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton { 4109482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton // We currently only dump the compile units that have been parsed 4119482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (cu_pos->get()) 4129482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton (*cu_pos)->Dump(s, show_context); 4139482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton } 41424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4159482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton s->IndentLess(); 4169482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton } 41724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 41824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 41924943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerCompUnitSP 42036da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg ClaytonSymbolVendor::GetCompileUnitAtIndex(size_t idx) 42124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 42224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner CompUnitSP cu_sp; 4239482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton ModuleSP module_sp(GetModule()); 4249482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (module_sp) 42524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 42636da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton const size_t num_compile_units = GetNumCompileUnits(); 4279482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (idx < num_compile_units) 42824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 42924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner cu_sp = m_compile_units[idx]; 4309482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton if (cu_sp.get() == NULL) 4319482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton { 4329482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton m_compile_units[idx] = m_sym_file_ap->ParseCompileUnitAtIndex(idx); 4339482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton cu_sp = m_compile_units[idx]; 4349482f05e109d617061c1ade6d9672dfcb8427547Greg Clayton } 43524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 43624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 43724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return cu_sp; 43824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 43924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 440a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael SartainSymtab * 441a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael SartainSymbolVendor::GetSymtab () 442a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain{ 443a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain ModuleSP module_sp(GetModule()); 444a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain if (module_sp) 445a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain { 446a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain ObjectFile *objfile = module_sp->GetObjectFile(); 447a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain if (objfile) 448a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain { 449a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain // Get symbol table from unified section list. 4507940069905bee0b2e5f0661bf37c9f906ddf8603Greg Clayton return objfile->GetSymtab (); 451a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain } 452a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain } 453a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain return NULL; 454a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain} 455a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain 456a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartainvoid 457a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael SartainSymbolVendor::ClearSymtab() 458a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain{ 459a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain ModuleSP module_sp(GetModule()); 460a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain if (module_sp) 461a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain { 462a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain ObjectFile *objfile = module_sp->GetObjectFile(); 463a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain if (objfile) 464a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain { 465a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain // Clear symbol table from unified section list. 4667940069905bee0b2e5f0661bf37c9f906ddf8603Greg Clayton objfile->ClearSymtab (); 467a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain } 468a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain } 469a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain} 47024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 47124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//------------------------------------------------------------------ 47224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// PluginInterface protocol 47324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//------------------------------------------------------------------ 4740e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Claytonlldb_private::ConstString 47524943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSymbolVendor::GetPluginName() 47624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 4770e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Clayton static ConstString g_name("vendor-default"); 4780e191607adcb0ea8ebd06c278be648a7f5c0097fGreg Clayton return g_name; 47924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 48024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 48124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattneruint32_t 48224943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSymbolVendor::GetPluginVersion() 48324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 48424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return 1; 48524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 48624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 487