003 File Manager
Current Path:
/usr/src/contrib/llvm-project/lldb/source/Symbol
usr
/
src
/
contrib
/
llvm-project
/
lldb
/
source
/
Symbol
/
📁
..
📄
ArmUnwindInfo.cpp
(12.12 KB)
📄
Block.cpp
(16.71 KB)
📄
CompactUnwindInfo.cpp
(55.24 KB)
📄
CompileUnit.cpp
(12.25 KB)
📄
CompilerDecl.cpp
(1.72 KB)
📄
CompilerDeclContext.cpp
(2.61 KB)
📄
CompilerType.cpp
(25.46 KB)
📄
DWARFCallFrameInfo.cpp
(39.32 KB)
📄
DebugMacros.cpp
(2.01 KB)
📄
DeclVendor.cpp
(1.05 KB)
📄
Declaration.cpp
(2.59 KB)
📄
FuncUnwinders.cpp
(21.43 KB)
📄
Function.cpp
(21.76 KB)
📄
LineEntry.cpp
(8.46 KB)
📄
LineTable.cpp
(21.06 KB)
📄
LocateSymbolFile.cpp
(14.52 KB)
📄
LocateSymbolFileMacOSX.cpp
(27.02 KB)
📄
ObjectFile.cpp
(28.16 KB)
📄
PostfixExpression.cpp
(6.92 KB)
📄
Symbol.cpp
(20.61 KB)
📄
SymbolContext.cpp
(42.63 KB)
📄
SymbolFile.cpp
(8.28 KB)
📄
SymbolVendor.cpp
(2.83 KB)
📄
Symtab.cpp
(38.59 KB)
📄
Type.cpp
(33.85 KB)
📄
TypeList.cpp
(7.25 KB)
📄
TypeMap.cpp
(8.02 KB)
📄
TypeSystem.cpp
(11.62 KB)
📄
UnwindPlan.cpp
(17.8 KB)
📄
UnwindTable.cpp
(6.45 KB)
📄
Variable.cpp
(24.04 KB)
📄
VariableList.cpp
(5.45 KB)
Editing: SymbolVendor.cpp
//===-- SymbolVendor.cpp --------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "lldb/Symbol/SymbolVendor.h" #include "lldb/Core/Module.h" #include "lldb/Core/PluginManager.h" #include "lldb/Symbol/CompileUnit.h" #include "lldb/Symbol/ObjectFile.h" #include "lldb/Symbol/SymbolFile.h" #include "lldb/Utility/Stream.h" using namespace lldb; using namespace lldb_private; // FindPlugin // // Platforms can register a callback to use when creating symbol vendors to // allow for complex debug information file setups, and to also allow for // finding separate debug information files. SymbolVendor *SymbolVendor::FindPlugin(const lldb::ModuleSP &module_sp, lldb_private::Stream *feedback_strm) { std::unique_ptr<SymbolVendor> instance_up; SymbolVendorCreateInstance create_callback; for (size_t idx = 0; (create_callback = PluginManager::GetSymbolVendorCreateCallbackAtIndex( idx)) != nullptr; ++idx) { instance_up.reset(create_callback(module_sp, feedback_strm)); if (instance_up) { return instance_up.release(); } } // The default implementation just tries to create debug information using // the file representation for the module. ObjectFileSP sym_objfile_sp; FileSpec sym_spec = module_sp->GetSymbolFileFileSpec(); if (sym_spec && sym_spec != module_sp->GetObjectFile()->GetFileSpec()) { DataBufferSP data_sp; offset_t data_offset = 0; sym_objfile_sp = ObjectFile::FindPlugin( module_sp, &sym_spec, 0, FileSystem::Instance().GetByteSize(sym_spec), data_sp, data_offset); } if (!sym_objfile_sp) sym_objfile_sp = module_sp->GetObjectFile()->shared_from_this(); instance_up = std::make_unique<SymbolVendor>(module_sp); instance_up->AddSymbolFileRepresentation(sym_objfile_sp); return instance_up.release(); } // SymbolVendor constructor SymbolVendor::SymbolVendor(const lldb::ModuleSP &module_sp) : ModuleChild(module_sp), m_sym_file_up() {} // Destructor SymbolVendor::~SymbolVendor() {} // Add a representation given an object file. void SymbolVendor::AddSymbolFileRepresentation(const ObjectFileSP &objfile_sp) { ModuleSP module_sp(GetModule()); if (module_sp) { std::lock_guard<std::recursive_mutex> guard(module_sp->GetMutex()); if (objfile_sp) m_sym_file_up.reset(SymbolFile::FindPlugin(objfile_sp)); } } // PluginInterface protocol lldb_private::ConstString SymbolVendor::GetPluginName() { static ConstString g_name("vendor-default"); return g_name; } uint32_t SymbolVendor::GetPluginVersion() { return 1; }
Upload File
Create Folder