124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- SBBreakpointLocation.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/API/SBBreakpointLocation.h" 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/API/SBDefines.h" 12980c7500ca60ce7ee0917ea77bc9bb4563950c57Greg Clayton#include "lldb/API/SBAddress.h" 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/API/SBDebugger.h" 1498f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice#include "lldb/API/SBStream.h" 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/lldb-types.h" 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/lldb-defines.h" 18640dc6b983964615bcb149d7d37ee007a13fb02cGreg Clayton#include "lldb/Breakpoint/Breakpoint.h" 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Breakpoint/BreakpointLocation.h" 203c7b5b9f83cae58ca366db2bba37dc09485f7dccJim Ingham#include "lldb/Target/ThreadSpec.h" 217826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice#include "lldb/Core/Log.h" 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/Stream.h" 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/StreamFile.h" 24bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton#include "lldb/Target/Target.h" 258e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham#include "lldb/Target/ThreadSpec.h" 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerusing namespace lldb; 2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerusing namespace lldb_private; 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 31538eb82a89a68dbc57251915080bd5152b333978Greg ClaytonSBBreakpointLocation::SBBreakpointLocation () : 32538eb82a89a68dbc57251915080bd5152b333978Greg Clayton m_opaque_sp () 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBBreakpointLocation::SBBreakpointLocation (const lldb::BreakpointLocationSP &break_loc_sp) : 3763094e0bb161580564954dee512955c1c79d3476Greg Clayton m_opaque_sp (break_loc_sp) 3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 39952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 407826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice 417826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice if (log) 427826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice { 437826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice SBStream sstr; 44bdc36bd05d156143d9f2e568a1aa1b5253bbe1f1Johnny Chen GetDescription (sstr, lldb::eDescriptionLevelBrief); 4561ba7ec20f616f907473dd501341cef5b47fa3f8Caroline Tice log->Printf ("SBBreakpointLocation::SBBreakpointLocaiton (const lldb::BreakpointLocationsSP &break_loc_sp" 4661ba7ec20f616f907473dd501341cef5b47fa3f8Caroline Tice "=%p) => this.sp = %p (%s)", break_loc_sp.get(), m_opaque_sp.get(), sstr.GetData()); 477826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice } 4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 50538eb82a89a68dbc57251915080bd5152b333978Greg ClaytonSBBreakpointLocation::SBBreakpointLocation(const SBBreakpointLocation &rhs) : 51538eb82a89a68dbc57251915080bd5152b333978Greg Clayton m_opaque_sp (rhs.m_opaque_sp) 52538eb82a89a68dbc57251915080bd5152b333978Greg Clayton{ 53538eb82a89a68dbc57251915080bd5152b333978Greg Clayton} 54538eb82a89a68dbc57251915080bd5152b333978Greg Clayton 55538eb82a89a68dbc57251915080bd5152b333978Greg Claytonconst SBBreakpointLocation & 56538eb82a89a68dbc57251915080bd5152b333978Greg ClaytonSBBreakpointLocation::operator = (const SBBreakpointLocation &rhs) 57538eb82a89a68dbc57251915080bd5152b333978Greg Clayton{ 58538eb82a89a68dbc57251915080bd5152b333978Greg Clayton if (this != &rhs) 59538eb82a89a68dbc57251915080bd5152b333978Greg Clayton m_opaque_sp = rhs.m_opaque_sp; 60538eb82a89a68dbc57251915080bd5152b333978Greg Clayton return *this; 61538eb82a89a68dbc57251915080bd5152b333978Greg Clayton} 62538eb82a89a68dbc57251915080bd5152b333978Greg Clayton 63538eb82a89a68dbc57251915080bd5152b333978Greg Clayton 6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBBreakpointLocation::~SBBreakpointLocation () 6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool 6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBBreakpointLocation::IsValid() const 7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 7163094e0bb161580564954dee512955c1c79d3476Greg Clayton return m_opaque_sp.get() != NULL; 7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 749a29f00d3dae2e368bd01226388633fe8653808eJim InghamSBAddress 759a29f00d3dae2e368bd01226388633fe8653808eJim InghamSBBreakpointLocation::GetAddress () 769a29f00d3dae2e368bd01226388633fe8653808eJim Ingham{ 779a29f00d3dae2e368bd01226388633fe8653808eJim Ingham if (m_opaque_sp) 789a29f00d3dae2e368bd01226388633fe8653808eJim Ingham return SBAddress(&m_opaque_sp->GetAddress()); 799a29f00d3dae2e368bd01226388633fe8653808eJim Ingham else 809a29f00d3dae2e368bd01226388633fe8653808eJim Ingham return SBAddress(); 819a29f00d3dae2e368bd01226388633fe8653808eJim Ingham} 829a29f00d3dae2e368bd01226388633fe8653808eJim Ingham 8324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattneraddr_t 8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBBreakpointLocation::GetLoadAddress () 8524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner addr_t ret_addr = LLDB_INVALID_ADDRESS; 8724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 8863094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 90bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton Mutex::Locker api_locker (m_opaque_sp->GetBreakpoint().GetTarget().GetAPIMutex()); 9163094e0bb161580564954dee512955c1c79d3476Greg Clayton ret_addr = m_opaque_sp->GetLoadAddress(); 9224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 9324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 9424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return ret_addr; 9524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 9624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 9724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnervoid 9824943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBBreakpointLocation::SetEnabled (bool enabled) 9924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 10063094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 10124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 102bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton Mutex::Locker api_locker (m_opaque_sp->GetBreakpoint().GetTarget().GetAPIMutex()); 10363094e0bb161580564954dee512955c1c79d3476Greg Clayton m_opaque_sp->SetEnabled (enabled); 10424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 10524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 10624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 10724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool 10824943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBBreakpointLocation::IsEnabled () 10924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 11063094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 111bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton { 112bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton Mutex::Locker api_locker (m_opaque_sp->GetBreakpoint().GetTarget().GetAPIMutex()); 11363094e0bb161580564954dee512955c1c79d3476Greg Clayton return m_opaque_sp->IsEnabled(); 114bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton } 11524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 11624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return false; 11724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 11824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 11954e7afa84d945f9137f9372ecde432f9e1a702fcGreg Claytonuint32_t 12024943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBBreakpointLocation::GetIgnoreCount () 12124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 12263094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 123bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton { 124bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton Mutex::Locker api_locker (m_opaque_sp->GetBreakpoint().GetTarget().GetAPIMutex()); 12563094e0bb161580564954dee512955c1c79d3476Greg Clayton return m_opaque_sp->GetIgnoreCount(); 126bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton } 12724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner else 12824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return 0; 12924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 13024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 13124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnervoid 13254e7afa84d945f9137f9372ecde432f9e1a702fcGreg ClaytonSBBreakpointLocation::SetIgnoreCount (uint32_t n) 13324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 13463094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 135bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton { 136bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton Mutex::Locker api_locker (m_opaque_sp->GetBreakpoint().GetTarget().GetAPIMutex()); 13763094e0bb161580564954dee512955c1c79d3476Greg Clayton m_opaque_sp->SetIgnoreCount (n); 138bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton } 13924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 14024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 14124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnervoid 142e3740831203337f606008b7c8d7ea34b521c8600Jim InghamSBBreakpointLocation::SetCondition (const char *condition) 143e3740831203337f606008b7c8d7ea34b521c8600Jim Ingham{ 144bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton if (m_opaque_sp) 145bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton { 146bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton Mutex::Locker api_locker (m_opaque_sp->GetBreakpoint().GetTarget().GetAPIMutex()); 147bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton m_opaque_sp->SetCondition (condition); 148bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton } 149e3740831203337f606008b7c8d7ea34b521c8600Jim Ingham} 150e3740831203337f606008b7c8d7ea34b521c8600Jim Ingham 151e3740831203337f606008b7c8d7ea34b521c8600Jim Inghamconst char * 152e3740831203337f606008b7c8d7ea34b521c8600Jim InghamSBBreakpointLocation::GetCondition () 153e3740831203337f606008b7c8d7ea34b521c8600Jim Ingham{ 154bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton if (m_opaque_sp) 155bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton { 156bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton Mutex::Locker api_locker (m_opaque_sp->GetBreakpoint().GetTarget().GetAPIMutex()); 157bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton return m_opaque_sp->GetConditionText (); 158bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton } 159bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton return NULL; 160e3740831203337f606008b7c8d7ea34b521c8600Jim Ingham} 161e3740831203337f606008b7c8d7ea34b521c8600Jim Ingham 162e3740831203337f606008b7c8d7ea34b521c8600Jim Inghamvoid 16324943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBBreakpointLocation::SetThreadID (tid_t thread_id) 16424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 16563094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 166bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton { 167bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton Mutex::Locker api_locker (m_opaque_sp->GetBreakpoint().GetTarget().GetAPIMutex()); 16863094e0bb161580564954dee512955c1c79d3476Greg Clayton m_opaque_sp->SetThreadID (thread_id); 169bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton } 17024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 17124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 17224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnertid_t 17324943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBBreakpointLocation::GetThreadID () 17424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 175bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton tid_t tid = LLDB_INVALID_THREAD_ID; 17663094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 177bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton { 178bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton Mutex::Locker api_locker (m_opaque_sp->GetBreakpoint().GetTarget().GetAPIMutex()); 17928e23861bedbeb5e46be7d2af4c33bf5132422c6Jim Ingham return m_opaque_sp->GetThreadID(); 180bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton } 181bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton return tid; 18224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 18324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1848e5e38f584a613f601a37f62e1b25230cb400c6fJim Inghamvoid 1858e5e38f584a613f601a37f62e1b25230cb400c6fJim InghamSBBreakpointLocation::SetThreadIndex (uint32_t index) 1868e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham{ 18763094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 188bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton { 189bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton Mutex::Locker api_locker (m_opaque_sp->GetBreakpoint().GetTarget().GetAPIMutex()); 19028e23861bedbeb5e46be7d2af4c33bf5132422c6Jim Ingham m_opaque_sp->SetThreadIndex (index); 191bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton } 1928e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham} 1938e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham 1948e5e38f584a613f601a37f62e1b25230cb400c6fJim Inghamuint32_t 1958e5e38f584a613f601a37f62e1b25230cb400c6fJim InghamSBBreakpointLocation::GetThreadIndex() const 1968e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham{ 197bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton uint32_t thread_idx = UINT32_MAX; 19863094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 1998e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham { 200bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton Mutex::Locker api_locker (m_opaque_sp->GetBreakpoint().GetTarget().GetAPIMutex()); 20128e23861bedbeb5e46be7d2af4c33bf5132422c6Jim Ingham return m_opaque_sp->GetThreadIndex(); 2028e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham } 203bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton return thread_idx; 2048e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham} 2058e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham 2068e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham 2078e5e38f584a613f601a37f62e1b25230cb400c6fJim Inghamvoid 2088e5e38f584a613f601a37f62e1b25230cb400c6fJim InghamSBBreakpointLocation::SetThreadName (const char *thread_name) 2098e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham{ 21063094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 211bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton { 212bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton Mutex::Locker api_locker (m_opaque_sp->GetBreakpoint().GetTarget().GetAPIMutex()); 21328e23861bedbeb5e46be7d2af4c33bf5132422c6Jim Ingham m_opaque_sp->SetThreadName (thread_name); 214bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton } 2158e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham} 2168e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham 2178e5e38f584a613f601a37f62e1b25230cb400c6fJim Inghamconst char * 2188e5e38f584a613f601a37f62e1b25230cb400c6fJim InghamSBBreakpointLocation::GetThreadName () const 2198e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham{ 22063094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 2218e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham { 222bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton Mutex::Locker api_locker (m_opaque_sp->GetBreakpoint().GetTarget().GetAPIMutex()); 22328e23861bedbeb5e46be7d2af4c33bf5132422c6Jim Ingham return m_opaque_sp->GetThreadName(); 2248e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham } 2258e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham return NULL; 2268e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham} 2278e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham 2288e5e38f584a613f601a37f62e1b25230cb400c6fJim Inghamvoid 2298e5e38f584a613f601a37f62e1b25230cb400c6fJim InghamSBBreakpointLocation::SetQueueName (const char *queue_name) 2308e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham{ 23163094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 232bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton { 233bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton Mutex::Locker api_locker (m_opaque_sp->GetBreakpoint().GetTarget().GetAPIMutex()); 23428e23861bedbeb5e46be7d2af4c33bf5132422c6Jim Ingham m_opaque_sp->SetQueueName (queue_name); 235bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton } 2368e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham} 2378e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham 2388e5e38f584a613f601a37f62e1b25230cb400c6fJim Inghamconst char * 2398e5e38f584a613f601a37f62e1b25230cb400c6fJim InghamSBBreakpointLocation::GetQueueName () const 2408e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham{ 24163094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 2428e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham { 243bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton Mutex::Locker api_locker (m_opaque_sp->GetBreakpoint().GetTarget().GetAPIMutex()); 24428e23861bedbeb5e46be7d2af4c33bf5132422c6Jim Ingham m_opaque_sp->GetQueueName (); 2458e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham } 2468e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham return NULL; 2478e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham} 2488e5e38f584a613f601a37f62e1b25230cb400c6fJim Ingham 24924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool 25024943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBBreakpointLocation::IsResolved () 25124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 25263094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 253bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton { 254bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton Mutex::Locker api_locker (m_opaque_sp->GetBreakpoint().GetTarget().GetAPIMutex()); 25563094e0bb161580564954dee512955c1c79d3476Greg Clayton return m_opaque_sp->IsResolved(); 256bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton } 257bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton return false; 25824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 25924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 26024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnervoid 26124943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBBreakpointLocation::SetLocation (const lldb::BreakpointLocationSP &break_loc_sp) 26224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 263bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton // Uninstall the callbacks? 26463094e0bb161580564954dee512955c1c79d3476Greg Clayton m_opaque_sp = break_loc_sp; 26524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 26624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 26798f930f429160f9777f626c3ac6aa609f4e965d2Caroline Ticebool 268bdc36bd05d156143d9f2e568a1aa1b5253bbe1f1Johnny ChenSBBreakpointLocation::GetDescription (SBStream &description, DescriptionLevel level) 26924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 27096154be69fa240a662419183ed08e1cfc5418164Greg Clayton Stream &strm = description.ref(); 27196154be69fa240a662419183ed08e1cfc5418164Greg Clayton 27263094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 27324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 274bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton Mutex::Locker api_locker (m_opaque_sp->GetBreakpoint().GetTarget().GetAPIMutex()); 27596154be69fa240a662419183ed08e1cfc5418164Greg Clayton m_opaque_sp->GetDescription (&strm, level); 27696154be69fa240a662419183ed08e1cfc5418164Greg Clayton strm.EOL(); 27724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 27898f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice else 27996154be69fa240a662419183ed08e1cfc5418164Greg Clayton strm.PutCString ("No value"); 28098f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice 28198f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice return true; 28298f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice} 28398f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice 2841c4ae3e669a5b2aa0ba0850f8e880eb9fefb719aJim Inghambreak_id_t 2851c4ae3e669a5b2aa0ba0850f8e880eb9fefb719aJim InghamSBBreakpointLocation::GetID () 2861c4ae3e669a5b2aa0ba0850f8e880eb9fefb719aJim Ingham{ 2871c4ae3e669a5b2aa0ba0850f8e880eb9fefb719aJim Ingham if (m_opaque_sp) 2881c4ae3e669a5b2aa0ba0850f8e880eb9fefb719aJim Ingham { 2891c4ae3e669a5b2aa0ba0850f8e880eb9fefb719aJim Ingham Mutex::Locker api_locker (m_opaque_sp->GetBreakpoint().GetTarget().GetAPIMutex()); 2901c4ae3e669a5b2aa0ba0850f8e880eb9fefb719aJim Ingham return m_opaque_sp->GetID (); 2911c4ae3e669a5b2aa0ba0850f8e880eb9fefb719aJim Ingham } 2921c4ae3e669a5b2aa0ba0850f8e880eb9fefb719aJim Ingham else 2931c4ae3e669a5b2aa0ba0850f8e880eb9fefb719aJim Ingham return LLDB_INVALID_BREAK_ID; 2941c4ae3e669a5b2aa0ba0850f8e880eb9fefb719aJim Ingham} 2951c4ae3e669a5b2aa0ba0850f8e880eb9fefb719aJim Ingham 29624943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBBreakpoint 29724943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerSBBreakpointLocation::GetBreakpoint () 29824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 299952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 3007826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice 30161ba7ec20f616f907473dd501341cef5b47fa3f8Caroline Tice //if (log) 30261ba7ec20f616f907473dd501341cef5b47fa3f8Caroline Tice // log->Printf ("SBBreakpointLocation::GetBreakpoint ()"); 3037826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice 30424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBBreakpoint sb_bp; 30563094e0bb161580564954dee512955c1c79d3476Greg Clayton if (m_opaque_sp) 306bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton { 307bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton Mutex::Locker api_locker (m_opaque_sp->GetBreakpoint().GetTarget().GetAPIMutex()); 30813d24fb1817faa7ccc4cfd799113ba1a2b8968ebGreg Clayton *sb_bp = m_opaque_sp->GetBreakpoint ().shared_from_this(); 309bdcda468276dc9ab6bf648fc8cc07f3faad91526Greg Clayton } 3107826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice 3117826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice if (log) 3127826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice { 3137826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice SBStream sstr; 3147826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice sb_bp.GetDescription (sstr); 31549ce682dfa7993d31206cea19ce7006cd3f3077eGreg Clayton log->Printf ("SBBreakpointLocation(%p)::GetBreakpoint () => SBBreakpoint(%p) %s", 31661ba7ec20f616f907473dd501341cef5b47fa3f8Caroline Tice m_opaque_sp.get(), sb_bp.get(), sstr.GetData()); 3177826c8894803dc729f29789ebc038956a94d3e7aCaroline Tice } 31824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return sb_bp; 31924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 32024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 321