124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- Symbol.cpp ----------------------------------------------*- 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/Symbol.h" 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/Module.h" 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/Section.h" 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/Stream.h" 1549ce8969d3154e1560106cfe530444c09410f217Greg Clayton#include "lldb/Symbol/ObjectFile.h" 1649ce8969d3154e1560106cfe530444c09410f217Greg Clayton#include "lldb/Symbol/Symtab.h" 17100b99e751282711167a6921677cc902af70598cMichael Sartain#include "lldb/Symbol/Function.h" 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Target/Process.h" 19eea264007bc5fb42c8f3239726a9d28ae42e1b7bGreg Clayton#include "lldb/Target/Target.h" 20a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain#include "lldb/Symbol/SymbolVendor.h" 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerusing namespace lldb; 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerusing namespace lldb_private; 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSymbol::Symbol() : 27dbeb3e1e038a75f00fd565203839020e1d00a7c6Stephen Wilson SymbolContextScope (), 28444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton m_uid (UINT32_MAX), 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_type_data (0), 3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_type_data_resolved (false), 3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_is_synthetic (false), 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_is_debug (false), 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_is_external (false), 3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_size_is_sibling (false), 3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_size_is_synthesized (false), 367940069905bee0b2e5f0661bf37c9f906ddf8603Greg Clayton m_size_is_valid (false), 3701e6a58b057676d5dc434876dbb2d54871bb962eGreg Clayton m_demangled_is_synthesized (false), 382eb5122c6aa0f4e1eae0f19563741bb3cb68d32eGreg Clayton m_type (eSymbolTypeInvalid), 3977e67a51acb825d79d25be687c085833713d5205Greg Clayton m_mangled (), 4077e67a51acb825d79d25be687c085833713d5205Greg Clayton m_addr_range (), 4177e67a51acb825d79d25be687c085833713d5205Greg Clayton m_flags () 4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSymbol::Symbol 4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner( 47444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton uint32_t symID, 4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const char *name, 4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool name_is_mangled, 5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SymbolType type, 5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool external, 5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool is_debug, 5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool is_trampoline, 5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool is_artificial, 553508c387c3f0c9ecc439d98048fd7694d41bab1bGreg Clayton const lldb::SectionSP §ion_sp, 5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner addr_t offset, 5736da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton addr_t size, 58f58438fa7751274b6f4e4b1805940127dce13b00Greg Clayton bool size_is_valid, 5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t flags 6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner) : 61dbeb3e1e038a75f00fd565203839020e1d00a7c6Stephen Wilson SymbolContextScope (), 62444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton m_uid (symID), 6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_type_data (0), 6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_type_data_resolved (false), 6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_is_synthetic (is_artificial), 6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_is_debug (is_debug), 6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_is_external (external), 6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_size_is_sibling (false), 6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_size_is_synthesized (false), 707940069905bee0b2e5f0661bf37c9f906ddf8603Greg Clayton m_size_is_valid (size_is_valid || size > 0), 7101e6a58b057676d5dc434876dbb2d54871bb962eGreg Clayton m_demangled_is_synthesized (false), 722eb5122c6aa0f4e1eae0f19563741bb3cb68d32eGreg Clayton m_type (type), 7377e67a51acb825d79d25be687c085833713d5205Greg Clayton m_mangled (ConstString(name), name_is_mangled), 7477e67a51acb825d79d25be687c085833713d5205Greg Clayton m_addr_range (section_sp, offset, size), 7577e67a51acb825d79d25be687c085833713d5205Greg Clayton m_flags (flags) 7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSymbol::Symbol 8024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner( 81444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton uint32_t symID, 8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const char *name, 8324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool name_is_mangled, 8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SymbolType type, 8524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool external, 8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool is_debug, 8724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool is_trampoline, 8824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool is_artificial, 8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const AddressRange &range, 90f58438fa7751274b6f4e4b1805940127dce13b00Greg Clayton bool size_is_valid, 9124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner uint32_t flags 9224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner) : 93dbeb3e1e038a75f00fd565203839020e1d00a7c6Stephen Wilson SymbolContextScope (), 94444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton m_uid (symID), 9524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_type_data (0), 9624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_type_data_resolved (false), 9724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_is_synthetic (is_artificial), 9824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_is_debug (is_debug), 9924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_is_external (external), 10024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_size_is_sibling (false), 10124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_size_is_synthesized (false), 1027940069905bee0b2e5f0661bf37c9f906ddf8603Greg Clayton m_size_is_valid (size_is_valid || range.GetByteSize() > 0), 10301e6a58b057676d5dc434876dbb2d54871bb962eGreg Clayton m_demangled_is_synthesized (false), 1042eb5122c6aa0f4e1eae0f19563741bb3cb68d32eGreg Clayton m_type (type), 10577e67a51acb825d79d25be687c085833713d5205Greg Clayton m_mangled (ConstString(name), name_is_mangled), 10677e67a51acb825d79d25be687c085833713d5205Greg Clayton m_addr_range (range), 10777e67a51acb825d79d25be687c085833713d5205Greg Clayton m_flags (flags) 10824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 10924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 11024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 11124943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSymbol::Symbol(const Symbol& rhs): 112dbeb3e1e038a75f00fd565203839020e1d00a7c6Stephen Wilson SymbolContextScope (rhs), 113444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton m_uid (rhs.m_uid), 11424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_type_data (rhs.m_type_data), 11524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_type_data_resolved (rhs.m_type_data_resolved), 11624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_is_synthetic (rhs.m_is_synthetic), 11724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_is_debug (rhs.m_is_debug), 11824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_is_external (rhs.m_is_external), 11924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_size_is_sibling (rhs.m_size_is_sibling), 12024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_size_is_synthesized (false), 1217940069905bee0b2e5f0661bf37c9f906ddf8603Greg Clayton m_size_is_valid (rhs.m_size_is_valid), 12201e6a58b057676d5dc434876dbb2d54871bb962eGreg Clayton m_demangled_is_synthesized (rhs.m_demangled_is_synthesized), 1232eb5122c6aa0f4e1eae0f19563741bb3cb68d32eGreg Clayton m_type (rhs.m_type), 12477e67a51acb825d79d25be687c085833713d5205Greg Clayton m_mangled (rhs.m_mangled), 12577e67a51acb825d79d25be687c085833713d5205Greg Clayton m_addr_range (rhs.m_addr_range), 12677e67a51acb825d79d25be687c085833713d5205Greg Clayton m_flags (rhs.m_flags) 12724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 12824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 12924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 13024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerconst Symbol& 13124943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSymbol::operator= (const Symbol& rhs) 13224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 13324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (this != &rhs) 13424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 1354fb08150367853dae24bb92904356788e919a72fGreg Clayton SymbolContextScope::operator= (rhs); 136444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton m_uid = rhs.m_uid; 13724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_type_data = rhs.m_type_data; 13824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_type_data_resolved = rhs.m_type_data_resolved; 13924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_is_synthetic = rhs.m_is_synthetic; 14024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_is_debug = rhs.m_is_debug; 14124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_is_external = rhs.m_is_external; 14224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_size_is_sibling = rhs.m_size_is_sibling; 14324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_size_is_synthesized = rhs.m_size_is_sibling; 1447940069905bee0b2e5f0661bf37c9f906ddf8603Greg Clayton m_size_is_valid = rhs.m_size_is_valid; 14501e6a58b057676d5dc434876dbb2d54871bb962eGreg Clayton m_demangled_is_synthesized = rhs.m_demangled_is_synthesized; 1462eb5122c6aa0f4e1eae0f19563741bb3cb68d32eGreg Clayton m_type = rhs.m_type; 14777e67a51acb825d79d25be687c085833713d5205Greg Clayton m_mangled = rhs.m_mangled; 1482eb5122c6aa0f4e1eae0f19563741bb3cb68d32eGreg Clayton m_addr_range = rhs.m_addr_range; 14977e67a51acb825d79d25be687c085833713d5205Greg Clayton m_flags = rhs.m_flags; 15024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 15124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return *this; 15224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 15324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 154444e35b5fdf15a25a427285650f06f1390e62c75Greg Claytonvoid 155444e35b5fdf15a25a427285650f06f1390e62c75Greg ClaytonSymbol::Clear() 156444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton{ 157444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton m_uid = UINT32_MAX; 158444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton m_mangled.Clear(); 159444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton m_type_data = 0; 160444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton m_type_data_resolved = false; 161444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton m_is_synthetic = false; 162444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton m_is_debug = false; 163444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton m_is_external = false; 164444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton m_size_is_sibling = false; 165444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton m_size_is_synthesized = false; 1667940069905bee0b2e5f0661bf37c9f906ddf8603Greg Clayton m_size_is_valid = false; 16701e6a58b057676d5dc434876dbb2d54871bb962eGreg Clayton m_demangled_is_synthesized = false; 1682eb5122c6aa0f4e1eae0f19563741bb3cb68d32eGreg Clayton m_type = eSymbolTypeInvalid; 169444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton m_flags = 0; 1702eb5122c6aa0f4e1eae0f19563741bb3cb68d32eGreg Clayton m_addr_range.Clear(); 171444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton} 172444e35b5fdf15a25a427285650f06f1390e62c75Greg Clayton 1730c31d3d3a4a1d00d53346d8a23b0519f47e55d1fGreg Claytonbool 1740c31d3d3a4a1d00d53346d8a23b0519f47e55d1fGreg ClaytonSymbol::ValueIsAddress() const 17524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 1760c31d3d3a4a1d00d53346d8a23b0519f47e55d1fGreg Clayton return m_addr_range.GetBaseAddress().GetSection().get() != NULL; 17724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 17824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 17924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattneruint32_t 18024943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSymbol::GetSiblingIndex() const 18124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 18224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return m_size_is_sibling ? m_addr_range.GetByteSize() : 0; 18324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 18424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 18524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool 18624943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSymbol::IsTrampoline () const 18724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 18824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return m_type == eSymbolTypeTrampoline; 18924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 19024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1914f9103faba72fdfc4b4299d6d459bc820ee597b2Matt Kopecbool 1924f9103faba72fdfc4b4299d6d459bc820ee597b2Matt KopecSymbol::IsIndirect () const 1934f9103faba72fdfc4b4299d6d459bc820ee597b2Matt Kopec{ 1944f9103faba72fdfc4b4299d6d459bc820ee597b2Matt Kopec return m_type == eSymbolTypeResolver; 1954f9103faba72fdfc4b4299d6d459bc820ee597b2Matt Kopec} 1964f9103faba72fdfc4b4299d6d459bc820ee597b2Matt Kopec 19724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnervoid 198eea264007bc5fb42c8f3239726a9d28ae42e1b7bGreg ClaytonSymbol::GetDescription (Stream *s, lldb::DescriptionLevel level, Target *target) const 19912bec71b323dc520f0e985a86e09c4712559e115Greg Clayton{ 2002ad894b66a6b5e689d98a7d4d2b7d037ca271b3bGreg Clayton s->Printf("id = {0x%8.8x}", m_uid); 20115ef51e3bd8229d3779f96e08b25b26182c91c6cGreg Clayton 2023508c387c3f0c9ecc439d98048fd7694d41bab1bGreg Clayton if (m_addr_range.GetBaseAddress().GetSection()) 20312bec71b323dc520f0e985a86e09c4712559e115Greg Clayton { 204e136881e5e9730ecf86402419fa5291141980ca3Greg Clayton if (ValueIsAddress()) 20512bec71b323dc520f0e985a86e09c4712559e115Greg Clayton { 206e136881e5e9730ecf86402419fa5291141980ca3Greg Clayton const lldb::addr_t byte_size = GetByteSize(); 207e136881e5e9730ecf86402419fa5291141980ca3Greg Clayton if (byte_size > 0) 208c67b7d13cffeb2c9454635e8a11d65350bce61adGreg Clayton { 209c67b7d13cffeb2c9454635e8a11d65350bce61adGreg Clayton s->PutCString (", range = "); 210eea264007bc5fb42c8f3239726a9d28ae42e1b7bGreg Clayton m_addr_range.Dump(s, target, Address::DumpStyleLoadAddress, Address::DumpStyleFileAddress); 211c67b7d13cffeb2c9454635e8a11d65350bce61adGreg Clayton } 212c67b7d13cffeb2c9454635e8a11d65350bce61adGreg Clayton else 213c67b7d13cffeb2c9454635e8a11d65350bce61adGreg Clayton { 214c67b7d13cffeb2c9454635e8a11d65350bce61adGreg Clayton s->PutCString (", address = "); 215eea264007bc5fb42c8f3239726a9d28ae42e1b7bGreg Clayton m_addr_range.GetBaseAddress().Dump(s, target, Address::DumpStyleLoadAddress, Address::DumpStyleFileAddress); 216c67b7d13cffeb2c9454635e8a11d65350bce61adGreg Clayton } 21712bec71b323dc520f0e985a86e09c4712559e115Greg Clayton } 21812bec71b323dc520f0e985a86e09c4712559e115Greg Clayton else 2195f35a4be95aed0e5b2cb36f7d785bcbfc67284aeDaniel Malea s->Printf (", value = 0x%16.16" PRIx64, m_addr_range.GetBaseAddress().GetOffset()); 22015ef51e3bd8229d3779f96e08b25b26182c91c6cGreg Clayton } 22115ef51e3bd8229d3779f96e08b25b26182c91c6cGreg Clayton else 22215ef51e3bd8229d3779f96e08b25b26182c91c6cGreg Clayton { 22315ef51e3bd8229d3779f96e08b25b26182c91c6cGreg Clayton if (m_size_is_sibling) 2245f35a4be95aed0e5b2cb36f7d785bcbfc67284aeDaniel Malea s->Printf (", sibling = %5" PRIu64, m_addr_range.GetBaseAddress().GetOffset()); 22515ef51e3bd8229d3779f96e08b25b26182c91c6cGreg Clayton else 2265f35a4be95aed0e5b2cb36f7d785bcbfc67284aeDaniel Malea s->Printf (", value = 0x%16.16" PRIx64, m_addr_range.GetBaseAddress().GetOffset()); 22712bec71b323dc520f0e985a86e09c4712559e115Greg Clayton } 228b302dffacdadeef509d28133a4c66299418122f8Greg Clayton if (m_mangled.GetDemangledName()) 229b302dffacdadeef509d28133a4c66299418122f8Greg Clayton s->Printf(", name=\"%s\"", m_mangled.GetDemangledName().AsCString()); 230b302dffacdadeef509d28133a4c66299418122f8Greg Clayton if (m_mangled.GetMangledName()) 231b302dffacdadeef509d28133a4c66299418122f8Greg Clayton s->Printf(", mangled=\"%s\"", m_mangled.GetMangledName().AsCString()); 232b302dffacdadeef509d28133a4c66299418122f8Greg Clayton 23312bec71b323dc520f0e985a86e09c4712559e115Greg Clayton} 23412bec71b323dc520f0e985a86e09c4712559e115Greg Clayton 23512bec71b323dc520f0e985a86e09c4712559e115Greg Claytonvoid 236eea264007bc5fb42c8f3239726a9d28ae42e1b7bGreg ClaytonSymbol::Dump(Stream *s, Target *target, uint32_t index) const 23724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 23824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// s->Printf("%.*p: ", (int)sizeof(void*) * 2, this); 23924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// s->Indent(); 24024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// s->Printf("Symbol[%5u] %6u %c%c %-12s ", 24124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner s->Printf("[%5u] %6u %c%c%c %-12s ", 24224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner index, 24324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetID(), 24424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_is_debug ? 'D' : ' ', 24524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_is_synthetic ? 'S' : ' ', 24624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_is_external ? 'X' : ' ', 24724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetTypeAsString()); 24824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2490c31d3d3a4a1d00d53346d8a23b0519f47e55d1fGreg Clayton // Make sure the size of the symbol is up to date before dumping 2500c31d3d3a4a1d00d53346d8a23b0519f47e55d1fGreg Clayton GetByteSize(); 2510c31d3d3a4a1d00d53346d8a23b0519f47e55d1fGreg Clayton 2520c31d3d3a4a1d00d53346d8a23b0519f47e55d1fGreg Clayton if (ValueIsAddress()) 25324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 25424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (!m_addr_range.GetBaseAddress().Dump(s, NULL, Address::DumpStyleFileAddress)) 25524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner s->Printf("%*s", 18, ""); 25624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 25724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner s->PutChar(' '); 25824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 259eea264007bc5fb42c8f3239726a9d28ae42e1b7bGreg Clayton if (!m_addr_range.GetBaseAddress().Dump(s, target, Address::DumpStyleLoadAddress)) 26024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner s->Printf("%*s", 18, ""); 26124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 26224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const char *format = m_size_is_sibling ? 26324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner " Sibling -> [%5llu] 0x%8.8x %s\n": 2645f35a4be95aed0e5b2cb36f7d785bcbfc67284aeDaniel Malea " 0x%16.16" PRIx64 " 0x%8.8x %s\n"; 26524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner s->Printf( format, 266e136881e5e9730ecf86402419fa5291141980ca3Greg Clayton GetByteSize(), 26724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_flags, 26824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_mangled.GetName().AsCString("")); 26924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 27024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 27124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 27224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const char *format = m_size_is_sibling ? 2735f35a4be95aed0e5b2cb36f7d785bcbfc67284aeDaniel Malea "0x%16.16" PRIx64 " Sibling -> [%5llu] 0x%8.8x %s\n": 2745f35a4be95aed0e5b2cb36f7d785bcbfc67284aeDaniel Malea "0x%16.16" PRIx64 " 0x%16.16" PRIx64 " 0x%8.8x %s\n"; 27524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner s->Printf( format, 27624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_addr_range.GetBaseAddress().GetOffset(), 277e136881e5e9730ecf86402419fa5291141980ca3Greg Clayton GetByteSize(), 27824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_flags, 27924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_mangled.GetName().AsCString("")); 28024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 28124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 28224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 28324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattneruint32_t 28424943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSymbol::GetPrologueByteSize () 28524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2864f9103faba72fdfc4b4299d6d459bc820ee597b2Matt Kopec if (m_type == eSymbolTypeCode || m_type == eSymbolTypeResolver) 28724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 28824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner if (!m_type_data_resolved) 28924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 29024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner m_type_data_resolved = true; 291100b99e751282711167a6921677cc902af70598cMichael Sartain 292100b99e751282711167a6921677cc902af70598cMichael Sartain const Address &base_address = m_addr_range.GetBaseAddress(); 293100b99e751282711167a6921677cc902af70598cMichael Sartain Function *function = base_address.CalculateSymbolContextFunction(); 294100b99e751282711167a6921677cc902af70598cMichael Sartain if (function) 295100b99e751282711167a6921677cc902af70598cMichael Sartain { 296100b99e751282711167a6921677cc902af70598cMichael Sartain // Functions have line entries which can also potentially have end of prologue information. 297100b99e751282711167a6921677cc902af70598cMichael Sartain // So if this symbol points to a function, use the prologue information from there. 298100b99e751282711167a6921677cc902af70598cMichael Sartain m_type_data = function->GetPrologueByteSize(); 299100b99e751282711167a6921677cc902af70598cMichael Sartain } 300100b99e751282711167a6921677cc902af70598cMichael Sartain else 30124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 302100b99e751282711167a6921677cc902af70598cMichael Sartain ModuleSP module_sp (base_address.GetModule()); 303100b99e751282711167a6921677cc902af70598cMichael Sartain SymbolContext sc; 304100b99e751282711167a6921677cc902af70598cMichael Sartain if (module_sp) 305a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain { 306100b99e751282711167a6921677cc902af70598cMichael Sartain uint32_t resolved_flags = module_sp->ResolveSymbolContextForAddress (base_address, 307100b99e751282711167a6921677cc902af70598cMichael Sartain eSymbolContextLineEntry, 308100b99e751282711167a6921677cc902af70598cMichael Sartain sc); 309100b99e751282711167a6921677cc902af70598cMichael Sartain if (resolved_flags & eSymbolContextLineEntry) 310a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain { 311100b99e751282711167a6921677cc902af70598cMichael Sartain // Default to the end of the first line entry. 312100b99e751282711167a6921677cc902af70598cMichael Sartain m_type_data = sc.line_entry.range.GetByteSize(); 313100b99e751282711167a6921677cc902af70598cMichael Sartain 314100b99e751282711167a6921677cc902af70598cMichael Sartain // Set address for next line. 315100b99e751282711167a6921677cc902af70598cMichael Sartain Address addr (base_address); 316100b99e751282711167a6921677cc902af70598cMichael Sartain addr.Slide (m_type_data); 317a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain 318100b99e751282711167a6921677cc902af70598cMichael Sartain // Check the first few instructions and look for one that has a line number that is 319100b99e751282711167a6921677cc902af70598cMichael Sartain // different than the first entry. This is also done in Function::GetPrologueByteSize(). 320100b99e751282711167a6921677cc902af70598cMichael Sartain uint16_t total_offset = m_type_data; 321100b99e751282711167a6921677cc902af70598cMichael Sartain for (int idx = 0; idx < 6; ++idx) 322a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain { 323100b99e751282711167a6921677cc902af70598cMichael Sartain SymbolContext sc_temp; 324100b99e751282711167a6921677cc902af70598cMichael Sartain resolved_flags = module_sp->ResolveSymbolContextForAddress (addr, eSymbolContextLineEntry, sc_temp); 325100b99e751282711167a6921677cc902af70598cMichael Sartain // Make sure we got line number information... 326100b99e751282711167a6921677cc902af70598cMichael Sartain if (!(resolved_flags & eSymbolContextLineEntry)) 327100b99e751282711167a6921677cc902af70598cMichael Sartain break; 328100b99e751282711167a6921677cc902af70598cMichael Sartain 329100b99e751282711167a6921677cc902af70598cMichael Sartain // If this line number is different than our first one, use it and we're done. 330100b99e751282711167a6921677cc902af70598cMichael Sartain if (sc_temp.line_entry.line != sc.line_entry.line) 331100b99e751282711167a6921677cc902af70598cMichael Sartain { 332100b99e751282711167a6921677cc902af70598cMichael Sartain m_type_data = total_offset; 333100b99e751282711167a6921677cc902af70598cMichael Sartain break; 334100b99e751282711167a6921677cc902af70598cMichael Sartain } 335100b99e751282711167a6921677cc902af70598cMichael Sartain 336100b99e751282711167a6921677cc902af70598cMichael Sartain // Slide addr up to the next line address. 337100b99e751282711167a6921677cc902af70598cMichael Sartain addr.Slide (sc_temp.line_entry.range.GetByteSize()); 338100b99e751282711167a6921677cc902af70598cMichael Sartain total_offset += sc_temp.line_entry.range.GetByteSize(); 339100b99e751282711167a6921677cc902af70598cMichael Sartain // If we've gone too far, bail out. 340100b99e751282711167a6921677cc902af70598cMichael Sartain if (total_offset >= m_addr_range.GetByteSize()) 341100b99e751282711167a6921677cc902af70598cMichael Sartain break; 342a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain } 343a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain 344100b99e751282711167a6921677cc902af70598cMichael Sartain // Sanity check - this may be a function in the middle of code that has debug information, but 345100b99e751282711167a6921677cc902af70598cMichael Sartain // not for this symbol. So the line entries surrounding us won't lie inside our function. 346100b99e751282711167a6921677cc902af70598cMichael Sartain // In that case, the line entry will be bigger than we are, so we do that quick check and 347100b99e751282711167a6921677cc902af70598cMichael Sartain // if that is true, we just return 0. 348100b99e751282711167a6921677cc902af70598cMichael Sartain if (m_type_data >= m_addr_range.GetByteSize()) 349100b99e751282711167a6921677cc902af70598cMichael Sartain m_type_data = 0; 350a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain } 351100b99e751282711167a6921677cc902af70598cMichael Sartain else 352100b99e751282711167a6921677cc902af70598cMichael Sartain { 353100b99e751282711167a6921677cc902af70598cMichael Sartain // TODO: expose something in Process to figure out the 354100b99e751282711167a6921677cc902af70598cMichael Sartain // size of a function prologue. 355a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain m_type_data = 0; 356100b99e751282711167a6921677cc902af70598cMichael Sartain } 357a807ceef5dad2b24e5bae5c5a193ff03aa7ec8d9Michael Sartain } 35824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 35924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 36024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return m_type_data; 36124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 36224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return 0; 36324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 36424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 36524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool 36624943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSymbol::Compare(const ConstString& name, SymbolType type) const 36724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 368e32a7bf78860bfbf1da863c3ceae4f5d7f89d71bJim Ingham if (type == eSymbolTypeAny || m_type == type) 36924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return m_mangled.GetMangledName() == name || m_mangled.GetDemangledName() == name; 37024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return false; 37124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 37224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 37324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define ENUM_TO_CSTRING(x) case eSymbolType##x: return #x; 37424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 37524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerconst char * 37624943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSymbol::GetTypeAsString() const 37724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 37824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner switch (m_type) 37924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 38024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ENUM_TO_CSTRING(Invalid); 38124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ENUM_TO_CSTRING(Absolute); 38224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ENUM_TO_CSTRING(Code); 38324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ENUM_TO_CSTRING(Data); 38424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ENUM_TO_CSTRING(Trampoline); 38524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ENUM_TO_CSTRING(Runtime); 38624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ENUM_TO_CSTRING(Exception); 38724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ENUM_TO_CSTRING(SourceFile); 38824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ENUM_TO_CSTRING(HeaderFile); 38924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ENUM_TO_CSTRING(ObjectFile); 39024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ENUM_TO_CSTRING(CommonBlock); 39124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ENUM_TO_CSTRING(Block); 39224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ENUM_TO_CSTRING(Local); 39324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ENUM_TO_CSTRING(Param); 39424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ENUM_TO_CSTRING(Variable); 39524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ENUM_TO_CSTRING(VariableType); 39624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ENUM_TO_CSTRING(LineEntry); 39724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ENUM_TO_CSTRING(LineHeader); 39824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ENUM_TO_CSTRING(ScopeBegin); 39924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ENUM_TO_CSTRING(ScopeEnd); 40024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ENUM_TO_CSTRING(Additional); 40124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ENUM_TO_CSTRING(Compiler); 40224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ENUM_TO_CSTRING(Instrumentation); 40324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ENUM_TO_CSTRING(Undefined); 4043f69eacbb218a37390822c89d3675bd740590382Greg Clayton ENUM_TO_CSTRING(ObjCClass); 4053f69eacbb218a37390822c89d3675bd740590382Greg Clayton ENUM_TO_CSTRING(ObjCMetaClass); 4063f69eacbb218a37390822c89d3675bd740590382Greg Clayton ENUM_TO_CSTRING(ObjCIVar); 40724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner default: 40824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner break; 40924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 41024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return "<unknown SymbolType>"; 41124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 41224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4134fb08150367853dae24bb92904356788e919a72fGreg Claytonvoid 4144fb08150367853dae24bb92904356788e919a72fGreg ClaytonSymbol::CalculateSymbolContext (SymbolContext *sc) 4154fb08150367853dae24bb92904356788e919a72fGreg Clayton{ 4164fb08150367853dae24bb92904356788e919a72fGreg Clayton // Symbols can reconstruct the symbol and the module in the symbol context 4174fb08150367853dae24bb92904356788e919a72fGreg Clayton sc->symbol = this; 4180c31d3d3a4a1d00d53346d8a23b0519f47e55d1fGreg Clayton if (ValueIsAddress()) 4190c31d3d3a4a1d00d53346d8a23b0519f47e55d1fGreg Clayton sc->module_sp = GetAddress().GetModule(); 42013d24fb1817faa7ccc4cfd799113ba1a2b8968ebGreg Clayton else 42113d24fb1817faa7ccc4cfd799113ba1a2b8968ebGreg Clayton sc->module_sp.reset(); 4224fb08150367853dae24bb92904356788e919a72fGreg Clayton} 4234fb08150367853dae24bb92904356788e919a72fGreg Clayton 4243508c387c3f0c9ecc439d98048fd7694d41bab1bGreg ClaytonModuleSP 425c51ffbf896e398ada5f7e89b2fa5aec6f2224f09Greg ClaytonSymbol::CalculateSymbolContextModule () 426c51ffbf896e398ada5f7e89b2fa5aec6f2224f09Greg Clayton{ 4270c31d3d3a4a1d00d53346d8a23b0519f47e55d1fGreg Clayton if (ValueIsAddress()) 4280c31d3d3a4a1d00d53346d8a23b0519f47e55d1fGreg Clayton return GetAddress().GetModule(); 4293508c387c3f0c9ecc439d98048fd7694d41bab1bGreg Clayton return ModuleSP(); 430c51ffbf896e398ada5f7e89b2fa5aec6f2224f09Greg Clayton} 431c51ffbf896e398ada5f7e89b2fa5aec6f2224f09Greg Clayton 432c51ffbf896e398ada5f7e89b2fa5aec6f2224f09Greg ClaytonSymbol * 433c51ffbf896e398ada5f7e89b2fa5aec6f2224f09Greg ClaytonSymbol::CalculateSymbolContextSymbol () 434c51ffbf896e398ada5f7e89b2fa5aec6f2224f09Greg Clayton{ 435c51ffbf896e398ada5f7e89b2fa5aec6f2224f09Greg Clayton return this; 436c51ffbf896e398ada5f7e89b2fa5aec6f2224f09Greg Clayton} 437c51ffbf896e398ada5f7e89b2fa5aec6f2224f09Greg Clayton 4384fb08150367853dae24bb92904356788e919a72fGreg Claytonvoid 4394fb08150367853dae24bb92904356788e919a72fGreg ClaytonSymbol::DumpSymbolContext (Stream *s) 4404fb08150367853dae24bb92904356788e919a72fGreg Clayton{ 4414fb08150367853dae24bb92904356788e919a72fGreg Clayton bool dumped_module = false; 4420c31d3d3a4a1d00d53346d8a23b0519f47e55d1fGreg Clayton if (ValueIsAddress()) 4430c31d3d3a4a1d00d53346d8a23b0519f47e55d1fGreg Clayton { 4440c31d3d3a4a1d00d53346d8a23b0519f47e55d1fGreg Clayton ModuleSP module_sp (GetAddress().GetModule()); 4453508c387c3f0c9ecc439d98048fd7694d41bab1bGreg Clayton if (module_sp) 4464fb08150367853dae24bb92904356788e919a72fGreg Clayton { 4474fb08150367853dae24bb92904356788e919a72fGreg Clayton dumped_module = true; 4483508c387c3f0c9ecc439d98048fd7694d41bab1bGreg Clayton module_sp->DumpSymbolContext(s); 4494fb08150367853dae24bb92904356788e919a72fGreg Clayton } 4504fb08150367853dae24bb92904356788e919a72fGreg Clayton } 4514fb08150367853dae24bb92904356788e919a72fGreg Clayton if (dumped_module) 4524fb08150367853dae24bb92904356788e919a72fGreg Clayton s->PutCString(", "); 4534fb08150367853dae24bb92904356788e919a72fGreg Clayton 4544fb08150367853dae24bb92904356788e919a72fGreg Clayton s->Printf("Symbol{0x%8.8x}", GetID()); 4554fb08150367853dae24bb92904356788e919a72fGreg Clayton} 4564fb08150367853dae24bb92904356788e919a72fGreg Clayton 4579f69f982142c1c6d4dbece98879eaf746e66728bGreg Claytonlldb::addr_t 4589f69f982142c1c6d4dbece98879eaf746e66728bGreg ClaytonSymbol::GetByteSize () const 4599f69f982142c1c6d4dbece98879eaf746e66728bGreg Clayton{ 4607940069905bee0b2e5f0661bf37c9f906ddf8603Greg Clayton return m_addr_range.GetByteSize(); 4619f69f982142c1c6d4dbece98879eaf746e66728bGreg Clayton} 4629f69f982142c1c6d4dbece98879eaf746e66728bGreg Clayton 463