Skip to content

Commit 59c382f

Browse files
author
Miro Bucko
committed
[lldb] Fix SBAddressRange validation checks.
1 parent 49ae2dc commit 59c382f

File tree

3 files changed

+19
-16
lines changed

3 files changed

+19
-16
lines changed

lldb/source/API/SBAddressRange.cpp

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ const SBAddressRange &SBAddressRange::operator=(const SBAddressRange &rhs) {
5050
bool SBAddressRange::operator==(const SBAddressRange &rhs) {
5151
LLDB_INSTRUMENT_VA(this, rhs);
5252

53-
if (!IsValid() || !rhs.IsValid())
54-
return false;
53+
assert(m_opaque_up && "opaque pointer must always be valid");
54+
assert(rhs.m_opaque_up && "opaque pointer must always be valid");
5555
return m_opaque_up->operator==(*(rhs.m_opaque_up));
5656
}
5757

@@ -64,40 +64,35 @@ bool SBAddressRange::operator!=(const SBAddressRange &rhs) {
6464
void SBAddressRange::Clear() {
6565
LLDB_INSTRUMENT_VA(this);
6666

67-
m_opaque_up.reset();
67+
assert(m_opaque_up && "opaque pointer must always be valid");
68+
m_opaque_up->Clear();
6869
}
6970

7071
bool SBAddressRange::IsValid() const {
7172
LLDB_INSTRUMENT_VA(this);
7273

73-
return m_opaque_up && m_opaque_up->IsValid();
74+
assert(m_opaque_up && "opaque pointer must always be valid");
75+
return m_opaque_up->IsValid();
7476
}
7577

7678
lldb::SBAddress SBAddressRange::GetBaseAddress() const {
7779
LLDB_INSTRUMENT_VA(this);
7880

79-
if (!IsValid())
80-
return lldb::SBAddress();
81+
assert(m_opaque_up && "opaque pointer must always be valid");
8182
return lldb::SBAddress(m_opaque_up->GetBaseAddress());
8283
}
8384

8485
lldb::addr_t SBAddressRange::GetByteSize() const {
8586
LLDB_INSTRUMENT_VA(this);
8687

87-
if (!IsValid())
88-
return 0;
88+
assert(m_opaque_up && "opaque pointer must always be valid");
8989
return m_opaque_up->GetByteSize();
9090
}
9191

9292
bool SBAddressRange::GetDescription(SBStream &description,
9393
const SBTarget target) {
9494
LLDB_INSTRUMENT_VA(this, description, target);
9595

96-
Stream &stream = description.ref();
97-
if (!IsValid()) {
98-
stream << "<invalid>";
99-
return true;
100-
}
101-
m_opaque_up->GetDescription(&stream, target.GetSP().get());
102-
return true;
96+
assert(m_opaque_up && "opaque pointer must always be valid");
97+
return m_opaque_up->GetDescription(&description.ref(), target.GetSP().get());
10398
}

lldb/source/API/SBAddressRangeList.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ const SBAddressRangeList &
3636
SBAddressRangeList::operator=(const SBAddressRangeList &rhs) {
3737
LLDB_INSTRUMENT_VA(this, rhs);
3838

39+
assert(m_opaque_up && "opaque pointer must always be valid");
40+
assert(rhs.m_opaque_up && "opaque pointer must always be valid");
3941
if (this != &rhs)
4042
*m_opaque_up = *rhs.m_opaque_up;
4143
return *this;
@@ -44,12 +46,14 @@ SBAddressRangeList::operator=(const SBAddressRangeList &rhs) {
4446
uint32_t SBAddressRangeList::GetSize() const {
4547
LLDB_INSTRUMENT_VA(this);
4648

49+
assert(m_opaque_up && "opaque pointer must always be valid");
4750
return m_opaque_up->GetSize();
4851
}
4952

5053
SBAddressRange SBAddressRangeList::GetAddressRangeAtIndex(uint64_t idx) {
5154
LLDB_INSTRUMENT_VA(this, idx);
5255

56+
assert(m_opaque_up && "opaque pointer must always be valid");
5357
SBAddressRange sb_addr_range;
5458
(*sb_addr_range.m_opaque_up) = m_opaque_up->GetAddressRangeAtIndex(idx);
5559
return sb_addr_range;
@@ -58,25 +62,29 @@ SBAddressRange SBAddressRangeList::GetAddressRangeAtIndex(uint64_t idx) {
5862
void SBAddressRangeList::Clear() {
5963
LLDB_INSTRUMENT_VA(this);
6064

65+
assert(m_opaque_up && "opaque pointer must always be valid");
6166
m_opaque_up->Clear();
6267
}
6368

6469
void SBAddressRangeList::Append(const SBAddressRange &sb_addr_range) {
6570
LLDB_INSTRUMENT_VA(this, sb_addr_range);
6671

72+
assert(m_opaque_up && "opaque pointer must always be valid");
6773
m_opaque_up->Append(*sb_addr_range.m_opaque_up);
6874
}
6975

7076
void SBAddressRangeList::Append(const SBAddressRangeList &sb_addr_range_list) {
7177
LLDB_INSTRUMENT_VA(this, sb_addr_range_list);
7278

79+
assert(m_opaque_up && "opaque pointer must always be valid");
7380
m_opaque_up->Append(*sb_addr_range_list.m_opaque_up);
7481
}
7582

7683
bool SBAddressRangeList::GetDescription(SBStream &description,
7784
const SBTarget &target) {
7885
LLDB_INSTRUMENT_VA(this, description, target);
7986

87+
assert(m_opaque_up && "opaque pointer must always be valid");
8088
const uint32_t num_ranges = GetSize();
8189
bool is_first = true;
8290
Stream &stream = description.ref();

lldb/test/API/python_api/address_range/TestAddressRange.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ def test_address_range_list_iterator(self):
166166
def test_address_range_print_invalid(self):
167167
"""Make sure the SBAddressRange can be printed when invalid."""
168168
range = lldb.SBAddressRange()
169-
self.assertEqual(str(range), "<invalid>")
169+
self.assertEqual(str(range), "[0xffffffffffffffff-0xffffffffffffffff)")
170170

171171
def test_address_range_print_resolved(self):
172172
"""Make sure the SBAddressRange can be printed when resolved."""

0 commit comments

Comments
 (0)