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