Skip to content

Commit 4923dca

Browse files
committed
Remove use of multiple reg index enums by RegisterContextPOSIX_arm64
Summary: This patch removes dependence of RegisterContextPOSIX_arm64 on register number enums defined in lldb-arm64-register-enums.h. RegisterContextPOSIX_arm64 makes use of helper functions to access register numbers defined in RegisterInfos_arm64.h via RegisterInfosPOSIX_arm64. Reviewers: labath Reviewed By: labath Subscribers: emaste, kristof.beyls, arphaman, danielkiss, lldb-commits Differential Revision: https://reviews.llvm.org/D83753
1 parent 9b7c43d commit 4923dca

File tree

4 files changed

+12
-15
lines changed

4 files changed

+12
-15
lines changed

lldb/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_arm64.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,10 @@ RegisterContextPOSIXProcessMonitor_arm64::
2424
RegisterContextPOSIXProcessMonitor_arm64(
2525
lldb_private::Thread &thread,
2626
std::unique_ptr<RegisterInfoPOSIX_arm64> register_info)
27-
: RegisterContextPOSIX_arm64(thread, std::move(register_info)) {}
27+
: RegisterContextPOSIX_arm64(thread, std::move(register_info)) {
28+
::memset(&m_fpr, 0, sizeof m_gpr_arm64);
29+
::memset(&m_fpr, 0, sizeof m_fpr);
30+
}
2831

2932
ProcessMonitor &RegisterContextPOSIXProcessMonitor_arm64::GetMonitor() {
3033
lldb::ProcessSP base = CalculateProcess();
@@ -226,11 +229,11 @@ bool RegisterContextPOSIXProcessMonitor_arm64::UpdateAfterBreakpoint() {
226229
unsigned RegisterContextPOSIXProcessMonitor_arm64::GetRegisterIndexFromOffset(
227230
unsigned offset) {
228231
unsigned reg;
229-
for (reg = 0; reg < k_num_registers_arm64; reg++) {
232+
for (reg = 0; reg < GetRegisterCount(); reg++) {
230233
if (GetRegisterInfo()[reg].byte_offset == offset)
231234
break;
232235
}
233-
assert(reg < k_num_registers_arm64 && "Invalid register offset.");
236+
assert(reg < GetRegisterCount() && "Invalid register offset.");
234237
return reg;
235238
}
236239

lldb/source/Plugins/Process/FreeBSD/RegisterContextPOSIXProcessMonitor_arm64.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,11 @@ class RegisterContextPOSIXProcessMonitor_arm64
7171
uint32_t NumSupportedHardwareWatchpoints();
7272

7373
private:
74+
RegisterInfoPOSIX_arm64::GPR m_gpr_arm64; // 64-bit general purpose registers.
75+
76+
RegisterInfoPOSIX_arm64::FPU
77+
m_fpr; // floating-point registers including extended register sets.
78+
7479
ProcessMonitor &GetMonitor();
7580
};
7681

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

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,7 @@ RegisterContextPOSIX_arm64::RegisterContextPOSIX_arm64(
4343
lldb_private::Thread &thread,
4444
std::unique_ptr<RegisterInfoPOSIX_arm64> register_info)
4545
: lldb_private::RegisterContext(thread, 0),
46-
m_register_info_up(std::move(register_info)) {
47-
48-
::memset(&m_fpr, 0, sizeof m_fpr);
49-
}
46+
m_register_info_up(std::move(register_info)) {}
5047

5148
RegisterContextPOSIX_arm64::~RegisterContextPOSIX_arm64() {}
5249

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

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
#include "RegisterInfoInterface.h"
1313
#include "RegisterInfoPOSIX_arm64.h"
14-
#include "lldb-arm64-register-enums.h"
1514
#include "lldb/Target/RegisterContext.h"
1615
#include "lldb/Utility/Log.h"
1716

@@ -46,13 +45,6 @@ class RegisterContextPOSIX_arm64 : public lldb_private::RegisterContext {
4645
const char *GetRegisterName(unsigned reg);
4746

4847
protected:
49-
uint64_t m_gpr_arm64[lldb_private::k_num_gpr_registers_arm64]; // 64-bit
50-
// general
51-
// purpose
52-
// registers.
53-
54-
struct RegisterInfoPOSIX_arm64::FPU
55-
m_fpr; // floating-point registers including extended register sets.
5648
std::unique_ptr<RegisterInfoPOSIX_arm64> m_register_info_up;
5749

5850
virtual const lldb_private::RegisterInfo *GetRegisterInfo();

0 commit comments

Comments
 (0)