Skip to content

Commit df17ec4

Browse files
committed
Inline what AdjustBreakpoint was doing.
1 parent 67a2c09 commit df17ec4

File tree

4 files changed

+17
-33
lines changed

4 files changed

+17
-33
lines changed

lldb/source/Plugins/Process/Utility/NativeRegisterContextDBReg.cpp

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,26 @@ uint32_t NativeRegisterContextDBReg::SetHardwareBreakpoint(lldb::addr_t addr,
4444
return LLDB_INVALID_INDEX32;
4545
}
4646

47-
uint32_t control_value = 0, bp_index = 0;
48-
4947
if (!ValidateBreakpoint(size, addr))
5048
return LLDB_INVALID_INDEX32;
5149

52-
control_value = MakeBreakControlValue(size);
50+
uint32_t control_value = MakeBreakControlValue(size);
51+
52+
// LLDB does this before making the request, but other clients may not.
53+
switch (size) {
54+
case 2:
55+
addr &= ~1;
56+
break;
57+
case 4:
58+
addr &= ~3;
59+
break;
60+
default:
61+
// ValidateBreakpoint should have rejected this.
62+
llvm_unreachable("Invalid breakpoint size.");
63+
}
5364

5465
// Iterate over stored breakpoints and find a free bp_index
55-
bp_index = LLDB_INVALID_INDEX32;
66+
uint32_t bp_index = LLDB_INVALID_INDEX32;
5667
for (uint32_t i = 0; i < m_max_hbp_supported; i++) {
5768
if (!BreakpointIsEnabled(i))
5869
bp_index = i; // Mark last free slot

lldb/source/Plugins/Process/Utility/NativeRegisterContextDBReg.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,12 +88,6 @@ class NativeRegisterContextDBReg
8888
virtual std::optional<WatchpointDetails>
8989
AdjustWatchpoint(const WatchpointDetails &details) = 0;
9090

91-
using BreakpointDetails = WatchpointDetails;
92-
virtual std::optional<BreakpointDetails>
93-
AdjustBreakpoint(const BreakpointDetails &details) {
94-
return details;
95-
}
96-
9791
virtual uint32_t MakeBreakControlValue(size_t size) = 0;
9892
virtual uint32_t MakeWatchControlValue(lldb::addr_t addr, size_t size,
9993
uint32_t watch_flags) = 0;

lldb/source/Plugins/Process/Utility/NativeRegisterContextDBReg_arm.cpp

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -32,25 +32,6 @@ uint32_t NativeRegisterContextDBReg_arm::GetWatchpointSize(uint32_t wp_index) {
3232
}
3333
}
3434

35-
std::optional<NativeRegisterContextDBReg::BreakpointDetails>
36-
NativeRegisterContextDBReg_arm::AdjustBreakpoint(
37-
const BreakpointDetails &details) {
38-
BreakpointDetails bd = details;
39-
// Use size to get a hint of arm vs thumb modes.
40-
switch (bd.size) {
41-
case 2:
42-
bd.addr &= ~1;
43-
break;
44-
case 4:
45-
bd.addr &= ~3;
46-
break;
47-
default:
48-
return {};
49-
}
50-
51-
return bd;
52-
}
53-
5435
std::optional<NativeRegisterContextDBReg::WatchpointDetails>
5536
NativeRegisterContextDBReg_arm::AdjustWatchpoint(
5637
const WatchpointDetails &details) {

lldb/source/Plugins/Process/Utility/NativeRegisterContextDBReg_arm.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,13 @@ class NativeRegisterContextDBReg_arm : public NativeRegisterContextDBReg {
2424
std::optional<WatchpointDetails>
2525
AdjustWatchpoint(const WatchpointDetails &details) override;
2626

27-
std::optional<BreakpointDetails>
28-
AdjustBreakpoint(const BreakpointDetails &details) override;
29-
3027
uint32_t MakeBreakControlValue(size_t size) override;
3128

3229
uint32_t MakeWatchControlValue(lldb::addr_t addr, size_t size,
3330
uint32_t watch_flags) override;
3431

35-
bool ValidateBreakpoint(size_t size, lldb::addr_t addr) override {
32+
bool ValidateBreakpoint(size_t size,
33+
[[maybe_unused]] lldb::addr_t addr) override {
3634
// Break on 4 or 2 byte instructions.
3735
return size == 4 || size == 2;
3836
}

0 commit comments

Comments
 (0)