SymbolContext.h revision 12bec71b323dc520f0e985a86e09c4712559e115
15d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner//===-- SymbolContext.h -----------------------------------------*- C++ -*-===// 25d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner// 35d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner// The LLVM Compiler Infrastructure 45d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner// 55d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner// This file is distributed under the University of Illinois Open Source 65d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner// License. See LICENSE.TXT for details. 75d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner// 85d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner//===----------------------------------------------------------------------===// 95d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#ifndef liblldb_SymbolContext_h_ 125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define liblldb_SymbolContext_h_ 135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#include <vector> 155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#include "lldb/lldb-private.h" 175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#include "lldb/Core/Address.h" 185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#include "lldb/Symbol/LineEntry.h" 195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnernamespace lldb_private { 215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerclass SymbolContextScope; 235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner//---------------------------------------------------------------------- 245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/// @class SymbolContext SymbolContext.h "lldb/Symbol/SymbolContext.h" 255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/// @brief Defines a symbol context baton that can be handed other debug 265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/// core functions. 275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/// 285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/// Many debugger functions require a context when doing lookups. This 295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/// class provides a common structure that can be used as the result 305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/// of a query that can contain a single result. Examples of such 315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/// queries include 322c538c86c15d597cc875dc926e4e39285c5625dfDavid 'Digit' Turner/// @li Looking up a load address. 335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner//---------------------------------------------------------------------- 345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerclass SymbolContext 355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{ 365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerpublic: 375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner //------------------------------------------------------------------ 395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// Default constructor. 405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// 415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// Initialize all pointer members to NULL and all struct members 425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// to their default state. 435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner //------------------------------------------------------------------ 445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner SymbolContext (); 455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner //------------------------------------------------------------------ 475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// Construct with an object that knows how to reconstruct its 485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// symbol context. 492c538c86c15d597cc875dc926e4e39285c5625dfDavid 'Digit' Turner /// 505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// @param[in] sc_scope 51cb42a1b1461e02efb034582ac5d8f71534723b92David 'Digit' Turner /// A symbol context scope object that knows how to reconstruct 525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// it's context. 535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner //------------------------------------------------------------------ 545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner explicit 555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner SymbolContext (SymbolContextScope *sc_scope); 565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner //------------------------------------------------------------------ 585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// Construct with module, and optional compile unit, function, 595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// block, line table, line entry and symbol. 605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// 615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// Initialize all pointer to the specified values. 625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// 635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// @param[in] module 645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// A Module pointer to the module for this context. 655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// 665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// @param[in] comp_unit 675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// A CompileUnit pointer to the compile unit for this context. 685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// 695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// @param[in] function 705d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// A Function pointer to the function for this context. 715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// 725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// @param[in] block 735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// A Block pointer to the deepest block for this context. 745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// 75cc330d4169441727fecf1da08aee806fc021c4e2David 'Digit' Turner /// @param[in] line_entry 766af6765e2f3bc930d0dce21d752bea570a1b1362David 'Digit' Turner /// A LineEntry pointer to the line entry for this context. 7734c48ff1e3ad5cd2084ca40188754d45f423750bDavid 'Digit' Turner /// 787a78db75ad42aea283f5073f51891464104a9fc3David 'Digit' Turner /// @param[in] symbol 795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// A Symbol pointer to the symbol for this context. 8034c48ff1e3ad5cd2084ca40188754d45f423750bDavid 'Digit' Turner //------------------------------------------------------------------ 815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner explicit 825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner SymbolContext (const lldb::TargetSP &target_sp, 8328a09b6fe8d8f3e92ffee9263609a6da881b8818David 'Digit' Turner const lldb::ModuleSP &module_sp, 845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner CompileUnit *comp_unit = NULL, 85cb42a1b1461e02efb034582ac5d8f71534723b92David 'Digit' Turner Function *function = NULL, 8628a09b6fe8d8f3e92ffee9263609a6da881b8818David 'Digit' Turner Block *block = NULL, 87622b8f4c760b8c4479d28430f978bad8bb9ea32cTim Baverstock LineEntry *line_entry = NULL, 885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner Symbol *symbol = NULL); 895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner // This version sets the target to a NULL TargetSP if you don't know it. 91986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner explicit 92986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner SymbolContext (const lldb::ModuleSP &module_sp, 93986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner CompileUnit *comp_unit = NULL, 94986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner Function *function = NULL, 95986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner Block *block = NULL, 96986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner LineEntry *line_entry = NULL, 97986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner Symbol *symbol = NULL); 985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 995973c775c853e26f684de58ad28c267281aaffd6David 'Digit' Turner //------------------------------------------------------------------ 1005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// Copy constructor 1015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// 102986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// Makes a copy of the another SymbolContext object \a rhs. 103986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// 104986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// @param[in] rhs 105986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// A const SymbolContext object reference to copy. 106986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner //------------------------------------------------------------------ 107986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner SymbolContext (const SymbolContext& rhs); 108986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner 109986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner //------------------------------------------------------------------ 110986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// Assignment operator. 111986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// 112986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// Copies the address value from another SymbolContext object \a 113986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// rhs into \a this object. 114986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// 115986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// @param[in] rhs 116986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// A const SymbolContext object reference to copy. 117986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// 118986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// @return 119986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// A const SymbolContext object reference to \a this. 120986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner //------------------------------------------------------------------ 121986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner const SymbolContext& 1225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner operator= (const SymbolContext& rhs); 1235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 1245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner //------------------------------------------------------------------ 1255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// Clear the object's state. 1265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// 1275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// Resets all pointer members to NULL, and clears any class objects 1285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// to their default state. 1295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner //------------------------------------------------------------------ 1305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner void 1315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner Clear (); 1325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 1335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner //------------------------------------------------------------------ 1345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// Dump a description of this object to a Stream. 1355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// 1365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// Dump a description of the contents of this object to the 1375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// supplied stream \a s. 1385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// 1395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// @param[in] s 1405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// The stream to which to dump the object descripton. 1415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner //------------------------------------------------------------------ 142986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner void 143986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner Dump (Stream *s, Process *process) const; 144986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner 145986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner //------------------------------------------------------------------ 1465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// Dump the stop context in this object to a Stream. 1475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// 1485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// Dump the best description of this object to the stream. The 1495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// information displayed depends on the amount and quality of the 1505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// information in this context. If a module, function, file and 1515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// line number are available, they will be dumped. If only a 1525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// module and function or symbol name with offset is available, 1535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// that will be ouput. Else just the address at which the target 1545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// was stopped will be displayed. 1555973c775c853e26f684de58ad28c267281aaffd6David 'Digit' Turner /// 1565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// @param[in] s 1575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// The stream to which to dump the object descripton. 1585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// 1595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// @param[in] so_addr 1605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// The resolved section offset address. 1615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner //------------------------------------------------------------------ 1625d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner void 1635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner DumpStopContext (Stream *s, 1645d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner ExecutionContextScope *exe_scope, 1655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner const Address &so_addr, 1665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner bool show_module = true) const; 1675d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 1685d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner //------------------------------------------------------------------ 1695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// Get the address range contained within a symbol context. 170a12820ef4aff2e2f6d3db9b704abee2c54d08f40David Turner /// 1715d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// Address range priority is as follows: 1725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// - line_entry address range if line_entry is valid 1735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// - function address range if function is not NULL 1745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// - symbol address range if symbol is not NULL 1755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// 1765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// @param[out] range 1775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// An address range object that will be filled in if \b true 1785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// is returned. 1795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// 1805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// @return 1815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// \b True if this symbol context contains items that describe 1825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// an address range, \b false otherwise. 183986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner //------------------------------------------------------------------ 1845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner bool 185986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner GetAddressRange (uint32_t scope, AddressRange &range) const; 1865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 187986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner 1885d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner void 1895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner GetDescription(Stream *s, 1905d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner lldb::DescriptionLevel level, 1915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner Process *process) const; 1925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 1935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner //------------------------------------------------------------------ 1945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// Find a function matching the given name, working out from this 195986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// symbol context. 1965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// 1975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// @return 1985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// A shared pointer to the function found. 1995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner //------------------------------------------------------------------ 2005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner Function * 2015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner FindFunctionByName (const char *name) const; 2025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 2035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner //------------------------------------------------------------------ 2045d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// Find a variable matching the given name, working out from this 2055d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// symbol context. 2065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// 2075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// @return 2085d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// A shared pointer to the variable found. 2095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner //------------------------------------------------------------------ 2105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner lldb::VariableSP 2115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner FindVariableByName (const char *name) const; 2125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 2135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner //------------------------------------------------------------------ 2145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// Find a type matching the given name, working out from this 2155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// symbol context. 2165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// 217986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// @return 2185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// A shared pointer to the variable found. 219986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner //------------------------------------------------------------------ 220986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner lldb::TypeSP 2215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner FindTypeByName (const char *name) const; 2225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 223986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner //------------------------------------------------------------------ 2245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner // Member variables 225986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner //------------------------------------------------------------------ 226986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner lldb::TargetSP target_sp; ///< The Target for a given query 2275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner lldb::ModuleSP module_sp; ///< The Module for a given query 2285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner CompileUnit * comp_unit; ///< The CompileUnit for a given query 2295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner Function * function; ///< The Function for a given query 2305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner Block * block; ///< The Block for a given query 2315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner LineEntry line_entry; ///< The LineEntry for a given query 2325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner Symbol * symbol; ///< The Symbol for a given query 2335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}; 2345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 2355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner//---------------------------------------------------------------------- 236986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner/// @class SymbolContextList SymbolContext.h "lldb/Symbol/SymbolContext.h" 2375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/// @brief Defines a list of symbol context objects. 238986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner/// 239986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner/// This class provides a common structure that can be used to contain 240986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner/// the result of a query that can contain a multiple results. Examples 241986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner/// of such queries include: 242986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner/// @li Looking up a function by name. 243986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner/// @li Finding all addressses for a specified file and line number. 244986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner//---------------------------------------------------------------------- 245986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turnerclass SymbolContextList 246986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner{ 247986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turnerpublic: 248986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner //------------------------------------------------------------------ 2495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// Default constructor. 2505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// 2515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// Initialize with an empty list. 2525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner //------------------------------------------------------------------ 253986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner SymbolContextList (); 2545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 255986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner //------------------------------------------------------------------ 2565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// Destructor. 257986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner //------------------------------------------------------------------ 2585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner ~SymbolContextList (); 2595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 2605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner //------------------------------------------------------------------ 2615d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// Append a new symbol context to the list. 262986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// 2635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// @param[in] sc 264986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// A symbol context to append to the list. 2655d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner //------------------------------------------------------------------ 2665d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner void 26795a83ce7ee413954ba6325584ea659c6685edfd5David 'Digit' Turner Append(const SymbolContext& sc); 268986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner 2695d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner //------------------------------------------------------------------ 27095a83ce7ee413954ba6325584ea659c6685edfd5David 'Digit' Turner /// Clear the object's state. 271986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// 2725d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// Clears the symbol context list. 2735d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner //------------------------------------------------------------------ 2745d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner void 2755d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner Clear(); 2765d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 2775d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner //------------------------------------------------------------------ 2785d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// Dump a description of this object to a Stream. 2795d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// 2805d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// Dump a description of the contents of each symbol context in 2815d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// the list to the supplied stream \a s. 2825d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// 2835d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// @param[in] s 2845d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// The stream to which to dump the object descripton. 2855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner //------------------------------------------------------------------ 2865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner void 2875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner Dump(Stream *s, Process *process) const; 288986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner 2895d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner //------------------------------------------------------------------ 290986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// Get accessor for a symbol context at index \a idx. 2915d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// 2925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// Dump a description of the contents of each symbol context in 293986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// the list to the supplied stream \a s. 294986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// 2955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// @param[in] idx 2965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// The zero based index into the symbol context list. 2975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// 2985d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner /// @param[out] sc 299986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// A reference to the symbol context to fill in. 300986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// 301986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// @return 302986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// Returns \b true if \a idx was a valid index into this 303986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// symbol context list and \a sc was filled in, \b false 304986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// otherwise. 305986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner //------------------------------------------------------------------ 306986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner bool 307986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner GetContextAtIndex(uint32_t idx, SymbolContext& sc) const; 308986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner 309986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner bool 310986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner RemoveContextAtIndex (uint32_t idx); 311986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner //------------------------------------------------------------------ 312986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// Get accessor for a symbol context list size. 313986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// 314986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// @return 315986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner /// Returns the number of symbol context objects in the list. 31695a83ce7ee413954ba6325584ea659c6685edfd5David 'Digit' Turner //------------------------------------------------------------------ 317986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner uint32_t 318986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner GetSize() const; 31995a83ce7ee413954ba6325584ea659c6685edfd5David 'Digit' Turner 320986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turnerprotected: 321986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner typedef std::vector<SymbolContext> collection; ///< The collection type for the list. 322986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner 323986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner //------------------------------------------------------------------ 324986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner // Member variables. 325986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner //------------------------------------------------------------------ 326986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner collection m_symbol_contexts; ///< The list of symbol contexts. 327986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner}; 328986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner 3295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerbool operator== (const SymbolContext& lhs, const SymbolContext& rhs); 3305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerbool operator!= (const SymbolContext& lhs, const SymbolContext& rhs); 3315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 3325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner} // namespace lldb_private 3335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 33495a83ce7ee413954ba6325584ea659c6685edfd5David 'Digit' Turner#endif // liblldb_SymbolContext_h_ 335986acc9eba2cf7c9b468c2f84764fa478907ac66David 'Digit' Turner