130fdc8d8SChris Lattner //===-- SBModule.cpp --------------------------------------------*- C++ -*-===// 230fdc8d8SChris Lattner // 330fdc8d8SChris Lattner // The LLVM Compiler Infrastructure 430fdc8d8SChris Lattner // 530fdc8d8SChris Lattner // This file is distributed under the University of Illinois Open Source 630fdc8d8SChris Lattner // License. See LICENSE.TXT for details. 730fdc8d8SChris Lattner // 830fdc8d8SChris Lattner //===----------------------------------------------------------------------===// 930fdc8d8SChris Lattner 1030fdc8d8SChris Lattner #include "lldb/API/SBModule.h" 1109960031SGreg Clayton #include "lldb/API/SBAddress.h" 1209960031SGreg Clayton #include "lldb/API/SBFileSpec.h" 1330fdc8d8SChris Lattner #include "lldb/API/SBFileSpec.h" 14dde9cff3SCaroline Tice #include "lldb/API/SBStream.h" 1530fdc8d8SChris Lattner #include "lldb/Core/Module.h" 16*ceb6b139SCaroline Tice #include "lldb/Core/Log.h" 17*ceb6b139SCaroline Tice #include "lldb/Core/STreamString.h" 1830fdc8d8SChris Lattner 1930fdc8d8SChris Lattner using namespace lldb; 20*ceb6b139SCaroline Tice using namespace lldb_private; 2130fdc8d8SChris Lattner 2230fdc8d8SChris Lattner 2330fdc8d8SChris Lattner SBModule::SBModule () : 246611103cSGreg Clayton m_opaque_sp () 2530fdc8d8SChris Lattner { 26*ceb6b139SCaroline Tice Log *log = lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API | LIBLLDB_LOG_VERBOSE); 27*ceb6b139SCaroline Tice 28*ceb6b139SCaroline Tice if (log) 29*ceb6b139SCaroline Tice log->Printf ("SBModule::SBModule () ==> this = %p", this); 3030fdc8d8SChris Lattner } 3130fdc8d8SChris Lattner 3230fdc8d8SChris Lattner SBModule::SBModule (const lldb::ModuleSP& module_sp) : 336611103cSGreg Clayton m_opaque_sp (module_sp) 3430fdc8d8SChris Lattner { 35*ceb6b139SCaroline Tice Log *log = lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API | LIBLLDB_LOG_VERBOSE); 36*ceb6b139SCaroline Tice 37*ceb6b139SCaroline Tice if (log) 38*ceb6b139SCaroline Tice log->Printf ("SBModule::SBModule (const lldb::ModuleSP &module_sp) module_sp.get() = %p ==> this = %p", 39*ceb6b139SCaroline Tice module_sp.get(), this); 4030fdc8d8SChris Lattner } 4130fdc8d8SChris Lattner 4230fdc8d8SChris Lattner SBModule::~SBModule () 4330fdc8d8SChris Lattner { 4430fdc8d8SChris Lattner } 4530fdc8d8SChris Lattner 4630fdc8d8SChris Lattner bool 4730fdc8d8SChris Lattner SBModule::IsValid () const 4830fdc8d8SChris Lattner { 496611103cSGreg Clayton return m_opaque_sp.get() != NULL; 5030fdc8d8SChris Lattner } 5130fdc8d8SChris Lattner 5230fdc8d8SChris Lattner SBFileSpec 5330fdc8d8SChris Lattner SBModule::GetFileSpec () const 5430fdc8d8SChris Lattner { 55*ceb6b139SCaroline Tice Log *log = lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API); 56*ceb6b139SCaroline Tice 57*ceb6b139SCaroline Tice if (log) 58*ceb6b139SCaroline Tice log->Printf ("SBModule::GetFileSpec ()"); 59*ceb6b139SCaroline Tice 6030fdc8d8SChris Lattner SBFileSpec file_spec; 616611103cSGreg Clayton if (m_opaque_sp) 626611103cSGreg Clayton file_spec.SetFileSpec(m_opaque_sp->GetFileSpec()); 63*ceb6b139SCaroline Tice 64*ceb6b139SCaroline Tice if (log) 65*ceb6b139SCaroline Tice { 66*ceb6b139SCaroline Tice SBStream sstr; 67*ceb6b139SCaroline Tice file_spec.GetDescription (sstr); 68*ceb6b139SCaroline Tice log->Printf ("SBModule::GetFileSpec ==> SBFileSpec (this = %p, 's')", &file_spec, sstr.GetData()); 69*ceb6b139SCaroline Tice } 70*ceb6b139SCaroline Tice 7130fdc8d8SChris Lattner return file_spec; 7230fdc8d8SChris Lattner } 7330fdc8d8SChris Lattner 7430fdc8d8SChris Lattner const uint8_t * 7530fdc8d8SChris Lattner SBModule::GetUUIDBytes () const 7630fdc8d8SChris Lattner { 77*ceb6b139SCaroline Tice Log *log = lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API); 78*ceb6b139SCaroline Tice 79*ceb6b139SCaroline Tice if (log) 80*ceb6b139SCaroline Tice log->Printf ("SBModule::GetUUIDBytes ()"); 81*ceb6b139SCaroline Tice 826611103cSGreg Clayton if (m_opaque_sp) 83*ceb6b139SCaroline Tice { 84*ceb6b139SCaroline Tice if (log) 85*ceb6b139SCaroline Tice { 86*ceb6b139SCaroline Tice StreamString sstr; 87*ceb6b139SCaroline Tice m_opaque_sp->GetUUID().Dump (&sstr); 88*ceb6b139SCaroline Tice log->Printf ("SBModule::GetUUIDBytes ==> '%s'", sstr.GetData()); 89*ceb6b139SCaroline Tice } 906611103cSGreg Clayton return (const uint8_t *)m_opaque_sp->GetUUID().GetBytes(); 91*ceb6b139SCaroline Tice } 92*ceb6b139SCaroline Tice 93*ceb6b139SCaroline Tice if (log) 94*ceb6b139SCaroline Tice log->Printf ("SBModule::GetUUIDBytes ==> NULL"); 9530fdc8d8SChris Lattner return NULL; 9630fdc8d8SChris Lattner } 9730fdc8d8SChris Lattner 9830fdc8d8SChris Lattner 9930fdc8d8SChris Lattner bool 10030fdc8d8SChris Lattner SBModule::operator == (const SBModule &rhs) const 10130fdc8d8SChris Lattner { 1026611103cSGreg Clayton if (m_opaque_sp) 1036611103cSGreg Clayton return m_opaque_sp.get() == rhs.m_opaque_sp.get(); 10430fdc8d8SChris Lattner return false; 10530fdc8d8SChris Lattner } 10630fdc8d8SChris Lattner 10730fdc8d8SChris Lattner bool 10830fdc8d8SChris Lattner SBModule::operator != (const SBModule &rhs) const 10930fdc8d8SChris Lattner { 1106611103cSGreg Clayton if (m_opaque_sp) 1116611103cSGreg Clayton return m_opaque_sp.get() != rhs.m_opaque_sp.get(); 11230fdc8d8SChris Lattner return false; 11330fdc8d8SChris Lattner } 11430fdc8d8SChris Lattner 11530fdc8d8SChris Lattner lldb::ModuleSP & 11630fdc8d8SChris Lattner SBModule::operator *() 11730fdc8d8SChris Lattner { 1186611103cSGreg Clayton return m_opaque_sp; 11930fdc8d8SChris Lattner } 12030fdc8d8SChris Lattner 12130fdc8d8SChris Lattner lldb_private::Module * 12230fdc8d8SChris Lattner SBModule::operator ->() 12330fdc8d8SChris Lattner { 1246611103cSGreg Clayton return m_opaque_sp.get(); 12530fdc8d8SChris Lattner } 12630fdc8d8SChris Lattner 12730fdc8d8SChris Lattner const lldb_private::Module * 12830fdc8d8SChris Lattner SBModule::operator ->() const 12930fdc8d8SChris Lattner { 1306611103cSGreg Clayton return m_opaque_sp.get(); 13130fdc8d8SChris Lattner } 13230fdc8d8SChris Lattner 13330fdc8d8SChris Lattner lldb_private::Module * 13430fdc8d8SChris Lattner SBModule::get() 13530fdc8d8SChris Lattner { 1366611103cSGreg Clayton return m_opaque_sp.get(); 13730fdc8d8SChris Lattner } 13830fdc8d8SChris Lattner 13930fdc8d8SChris Lattner const lldb_private::Module * 14030fdc8d8SChris Lattner SBModule::get() const 14130fdc8d8SChris Lattner { 1426611103cSGreg Clayton return m_opaque_sp.get(); 14330fdc8d8SChris Lattner } 14430fdc8d8SChris Lattner 14530fdc8d8SChris Lattner 14630fdc8d8SChris Lattner void 14730fdc8d8SChris Lattner SBModule::SetModule (const lldb::ModuleSP& module_sp) 14830fdc8d8SChris Lattner { 1496611103cSGreg Clayton m_opaque_sp = module_sp; 15030fdc8d8SChris Lattner } 15130fdc8d8SChris Lattner 15209960031SGreg Clayton 15309960031SGreg Clayton bool 15409960031SGreg Clayton SBModule::ResolveFileAddress (lldb::addr_t vm_addr, SBAddress& addr) 15509960031SGreg Clayton { 15609960031SGreg Clayton if (m_opaque_sp) 15709960031SGreg Clayton return m_opaque_sp->ResolveFileAddress (vm_addr, *addr); 15809960031SGreg Clayton 15909960031SGreg Clayton addr->Clear(); 16009960031SGreg Clayton return false; 16109960031SGreg Clayton } 16209960031SGreg Clayton 16309960031SGreg Clayton SBSymbolContext 16409960031SGreg Clayton SBModule::ResolveSymbolContextForAddress (const SBAddress& addr, uint32_t resolve_scope) 16509960031SGreg Clayton { 16609960031SGreg Clayton SBSymbolContext sb_sc; 16709960031SGreg Clayton if (m_opaque_sp && addr.IsValid()) 16809960031SGreg Clayton m_opaque_sp->ResolveSymbolContextForAddress (*addr, resolve_scope, *sb_sc); 16909960031SGreg Clayton return sb_sc; 17009960031SGreg Clayton } 17109960031SGreg Clayton 172dde9cff3SCaroline Tice bool 173dde9cff3SCaroline Tice SBModule::GetDescription (SBStream &description) 174dde9cff3SCaroline Tice { 175dde9cff3SCaroline Tice if (m_opaque_sp) 176dde9cff3SCaroline Tice { 177dac97f31SCaroline Tice description.ref(); 178*ceb6b139SCaroline Tice m_opaque_sp->GetDescription (description.get()); 179dde9cff3SCaroline Tice } 180dde9cff3SCaroline Tice else 181dde9cff3SCaroline Tice description.Printf ("No value"); 182dde9cff3SCaroline Tice 183dde9cff3SCaroline Tice return true; 184dde9cff3SCaroline Tice } 185