A long time ago we start with clang types that were created by the symbol files and there were many functions in lldb_private::ClangASTContext that helped. Later we create ClangASTType which contains a clang::ASTContext and an opauque QualType, but we didn't switch over to fully using it. There were a lot of places where we would pass around a raw clang_type_t and also pass along a clang::ASTContext separately. This left room for error. This checkin change all type code over to use ClangASTType everywhere and I cleaned up the interfaces quite a bit. Any code that was in ClangASTContext that was type related, was moved over into ClangASTType. All code that used these types was switched over to use all of the new goodness. llvm-svn: 186130
143 lines
5.0 KiB
C++
143 lines
5.0 KiB
C++
//===-- SymbolFileSymtab.h --------------------------------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef liblldb_SymbolFileSymtab_h_
|
|
#define liblldb_SymbolFileSymtab_h_
|
|
|
|
#include "lldb/Symbol/SymbolFile.h"
|
|
#include "lldb/Symbol/Symtab.h"
|
|
#include <vector>
|
|
|
|
class SymbolFileSymtab : public lldb_private::SymbolFile
|
|
{
|
|
public:
|
|
//------------------------------------------------------------------
|
|
// Static Functions
|
|
//------------------------------------------------------------------
|
|
static void
|
|
Initialize();
|
|
|
|
static void
|
|
Terminate();
|
|
|
|
static lldb_private::ConstString
|
|
GetPluginNameStatic();
|
|
|
|
static const char *
|
|
GetPluginDescriptionStatic();
|
|
|
|
static lldb_private::SymbolFile*
|
|
CreateInstance (lldb_private::ObjectFile* obj_file);
|
|
|
|
//------------------------------------------------------------------
|
|
// Constructors and Destructors
|
|
//------------------------------------------------------------------
|
|
SymbolFileSymtab(lldb_private::ObjectFile* obj_file);
|
|
|
|
virtual
|
|
~SymbolFileSymtab();
|
|
|
|
virtual uint32_t CalculateAbilities ();
|
|
|
|
//------------------------------------------------------------------
|
|
// Compile Unit function calls
|
|
//------------------------------------------------------------------
|
|
virtual uint32_t
|
|
GetNumCompileUnits();
|
|
|
|
virtual lldb::CompUnitSP
|
|
ParseCompileUnitAtIndex(uint32_t index);
|
|
|
|
virtual lldb::LanguageType
|
|
ParseCompileUnitLanguage (const lldb_private::SymbolContext& sc);
|
|
|
|
virtual size_t
|
|
ParseCompileUnitFunctions (const lldb_private::SymbolContext& sc);
|
|
|
|
virtual bool
|
|
ParseCompileUnitLineTable (const lldb_private::SymbolContext& sc);
|
|
|
|
virtual bool
|
|
ParseCompileUnitSupportFiles (const lldb_private::SymbolContext& sc, lldb_private::FileSpecList &support_files);
|
|
|
|
virtual size_t
|
|
ParseFunctionBlocks (const lldb_private::SymbolContext& sc);
|
|
|
|
virtual size_t
|
|
ParseTypes (const lldb_private::SymbolContext& sc);
|
|
|
|
virtual size_t
|
|
ParseVariablesForContext (const lldb_private::SymbolContext& sc);
|
|
|
|
virtual lldb_private::Type*
|
|
ResolveTypeUID(lldb::user_id_t type_uid);
|
|
|
|
virtual bool
|
|
ResolveClangOpaqueTypeDefinition (lldb_private::ClangASTType& clang_type);
|
|
|
|
virtual uint32_t
|
|
ResolveSymbolContext (const lldb_private::Address& so_addr, uint32_t resolve_scope, lldb_private::SymbolContext& sc);
|
|
|
|
virtual uint32_t
|
|
ResolveSymbolContext (const lldb_private::FileSpec& file_spec, uint32_t line, bool check_inlines, uint32_t resolve_scope, lldb_private::SymbolContextList& sc_list);
|
|
|
|
virtual uint32_t
|
|
FindGlobalVariables(const lldb_private::ConstString &name, const lldb_private::ClangNamespaceDecl *namespace_decl, bool append, uint32_t max_matches, lldb_private::VariableList& variables);
|
|
|
|
virtual uint32_t
|
|
FindGlobalVariables(const lldb_private::RegularExpression& regex, bool append, uint32_t max_matches, lldb_private::VariableList& variables);
|
|
|
|
virtual uint32_t
|
|
FindFunctions(const lldb_private::ConstString &name, const lldb_private::ClangNamespaceDecl *namespace_decl, uint32_t name_type_mask, bool include_inlines, bool append, lldb_private::SymbolContextList& sc_list);
|
|
|
|
virtual uint32_t
|
|
FindFunctions(const lldb_private::RegularExpression& regex, bool include_inlines, bool append, lldb_private::SymbolContextList& sc_list);
|
|
|
|
virtual uint32_t
|
|
FindTypes (const lldb_private::SymbolContext& sc,const lldb_private::ConstString &name, const lldb_private::ClangNamespaceDecl *namespace_decl, bool append, uint32_t max_matches, lldb_private::TypeList& types);
|
|
|
|
virtual size_t
|
|
GetTypes (lldb_private::SymbolContextScope *sc_scope,
|
|
uint32_t type_mask,
|
|
lldb_private::TypeList &type_list);
|
|
|
|
virtual lldb_private::ClangNamespaceDecl
|
|
FindNamespace (const lldb_private::SymbolContext& sc,
|
|
const lldb_private::ConstString &name,
|
|
const lldb_private::ClangNamespaceDecl *parent_namespace_decl);
|
|
|
|
//------------------------------------------------------------------
|
|
// PluginInterface protocol
|
|
//------------------------------------------------------------------
|
|
virtual lldb_private::ConstString
|
|
GetPluginName();
|
|
|
|
virtual uint32_t
|
|
GetPluginVersion();
|
|
|
|
protected:
|
|
typedef std::map<lldb_private::ConstString, lldb::TypeSP> TypeMap;
|
|
|
|
lldb_private::Symtab::IndexCollection m_source_indexes;
|
|
lldb_private::Symtab::IndexCollection m_func_indexes;
|
|
lldb_private::Symtab::IndexCollection m_code_indexes;
|
|
lldb_private::Symtab::IndexCollection m_data_indexes;
|
|
lldb_private::Symtab::NameToIndexMap m_objc_class_name_to_index;
|
|
TypeMap m_objc_class_types;
|
|
|
|
lldb_private::ClangASTContext &
|
|
GetClangASTContext ();
|
|
|
|
private:
|
|
DISALLOW_COPY_AND_ASSIGN (SymbolFileSymtab);
|
|
};
|
|
|
|
|
|
#endif // liblldb_SymbolFileSymtab_h_
|