Skip to content

Commit 6754caa

Browse files
committed
Add an SB API to get the SBTarget from an SBBreakpoint
Differential Revision: https://reviews.llvm.org/D89358
1 parent a91dd3d commit 6754caa

File tree

4 files changed

+19
-0
lines changed

4 files changed

+19
-0
lines changed

lldb/bindings/interface/SBBreakpoint.i

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,9 @@ public:
100100
void
101101
ClearAllBreakpointSites ();
102102

103+
lldb::SBTarget
104+
GetTarget() const;
105+
103106
lldb::SBBreakpointLocation
104107
FindLocationByAddress (lldb::addr_t vm_addr);
105108

lldb/include/lldb/API/SBBreakpoint.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ class LLDB_API SBBreakpoint {
4242

4343
void ClearAllBreakpointSites();
4444

45+
lldb::SBTarget GetTarget() const;
46+
4547
lldb::SBBreakpointLocation FindLocationByAddress(lldb::addr_t vm_addr);
4648

4749
lldb::break_id_t FindLocationIDByAddress(lldb::addr_t vm_addr);

lldb/source/API/SBBreakpoint.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,16 @@ bool SBBreakpoint::operator!=(const lldb::SBBreakpoint &rhs) {
8181
return m_opaque_wp.lock() != rhs.m_opaque_wp.lock();
8282
}
8383

84+
SBTarget SBBreakpoint::GetTarget() const {
85+
LLDB_RECORD_METHOD_CONST_NO_ARGS(lldb::SBTarget, SBBreakpoint, GetTarget);
86+
87+
BreakpointSP bkpt_sp = GetSP();
88+
if (bkpt_sp)
89+
return LLDB_RECORD_RESULT(SBTarget(bkpt_sp->GetTargetSP()));
90+
91+
return LLDB_RECORD_RESULT(SBTarget());
92+
}
93+
8494
break_id_t SBBreakpoint::GetID() const {
8595
LLDB_RECORD_METHOD_CONST_NO_ARGS(lldb::break_id_t, SBBreakpoint, GetID);
8696

@@ -987,6 +997,7 @@ void RegisterMethods<SBBreakpoint>(Registry &R) {
987997
SBBreakpoint, operator==,(const lldb::SBBreakpoint &));
988998
LLDB_REGISTER_METHOD(bool,
989999
SBBreakpoint, operator!=,(const lldb::SBBreakpoint &));
1000+
LLDB_REGISTER_METHOD_CONST(lldb::SBTarget, SBBreakpoint, GetTarget, ());
9901001
LLDB_REGISTER_METHOD_CONST(lldb::break_id_t, SBBreakpoint, GetID, ());
9911002
LLDB_REGISTER_METHOD_CONST(bool, SBBreakpoint, IsValid, ());
9921003
LLDB_REGISTER_METHOD_CONST(bool, SBBreakpoint, operator bool, ());

lldb/test/API/python_api/breakpoint/TestBreakpointAPI.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ def test_target_delete(self):
6666
location = breakpoint.GetLocationAtIndex(0)
6767
self.assertTrue(location.IsValid())
6868

69+
# Make sure the breakpoint's target is right:
70+
self.assertEqual(target, breakpoint.GetTarget(), "Breakpoint reports its target correctly")
71+
6972
self.assertTrue(self.dbg.DeleteTarget(target))
7073
self.assertFalse(breakpoint.IsValid())
7174
self.assertFalse(location.IsValid())

0 commit comments

Comments
 (0)