Skip to content

Commit 5b842ed

Browse files
committed
[lldb][AIX] Added base file for AIX Register Context
1 parent 299a55a commit 5b842ed

File tree

3 files changed

+141
-0
lines changed

3 files changed

+141
-0
lines changed

lldb/source/Plugins/Process/AIX/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
add_lldb_library(lldbPluginProcessAIX
22
NativeProcessAIX.cpp
33
NativeThreadAIX.cpp
4+
NativeRegisterContextAIX.cpp
45

56
LINK_COMPONENTS
67
Support
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
//===-- NativeRegisterContextAIX.cpp ------------------------------------===//
2+
//
3+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
//===----------------------------------------------------------------------===//
8+
9+
#include "NativeRegisterContextAIX.h"
10+
#include "Plugins/Process/AIX/NativeProcessAIX.h"
11+
12+
using namespace lldb_private;
13+
using namespace lldb_private::process_aix;
14+
15+
lldb::ByteOrder NativeRegisterContextAIX::GetByteOrder() const {
16+
return m_thread.GetProcess().GetByteOrder();
17+
}
18+
19+
Status NativeRegisterContextAIX::ReadRegisterRaw(uint32_t reg_index,
20+
RegisterValue &reg_value) {
21+
return Status("unimplemented");
22+
}
23+
24+
Status
25+
NativeRegisterContextAIX::WriteRegisterRaw(uint32_t reg_index,
26+
const RegisterValue &reg_value) {
27+
return Status("unimplemented");
28+
}
29+
30+
Status NativeRegisterContextAIX::ReadGPR() { return Status("unimplemented"); }
31+
32+
Status NativeRegisterContextAIX::WriteGPR() { return Status("unimplemented"); }
33+
34+
Status NativeRegisterContextAIX::ReadFPR() { return Status("unimplemented"); }
35+
36+
Status NativeRegisterContextAIX::WriteFPR() { return Status("unimplemented"); }
37+
38+
Status NativeRegisterContextAIX::ReadVMX() { return Status("unimplemented"); }
39+
40+
Status NativeRegisterContextAIX::WriteVMX() { return Status("unimplemented"); }
41+
42+
Status NativeRegisterContextAIX::ReadVSX() { return Status("unimplemented"); }
43+
44+
Status NativeRegisterContextAIX::WriteVSX() { return Status("unimplemented"); }
45+
46+
Status NativeRegisterContextAIX::ReadRegisterSet(void *buf, size_t buf_size,
47+
unsigned int regset) {
48+
return Status("unimplemented");
49+
}
50+
51+
Status NativeRegisterContextAIX::WriteRegisterSet(void *buf, size_t buf_size,
52+
unsigned int regset) {
53+
return Status("unimplemented");
54+
}
55+
56+
Status NativeRegisterContextAIX::DoReadRegisterValue(uint32_t offset,
57+
const char *reg_name,
58+
uint32_t size,
59+
RegisterValue &value) {
60+
return Status("unimplemented");
61+
}
62+
63+
Status NativeRegisterContextAIX::DoWriteRegisterValue(
64+
uint32_t offset, const char *reg_name, const RegisterValue &value) {
65+
return Status("unimplemented");
66+
}
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
//===-- NativeRegisterContextAIX.h ----------------------------*- C++ -*-===//
2+
//
3+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
//===----------------------------------------------------------------------===//
8+
9+
#ifndef lldb_NativeRegisterContextAIX_h
10+
#define lldb_NativeRegisterContextAIX_h
11+
12+
#include "Plugins/Process/Utility/NativeRegisterContextRegisterInfo.h"
13+
14+
namespace lldb_private {
15+
namespace process_aix {
16+
17+
class NativeThreadAIX;
18+
19+
class NativeRegisterContextAIX
20+
: public virtual NativeRegisterContextRegisterInfo {
21+
protected:
22+
NativeRegisterContextAIX(NativeThreadProtocol &thread)
23+
: NativeRegisterContextRegisterInfo(thread, nullptr) {}
24+
25+
lldb::ByteOrder GetByteOrder() const;
26+
27+
virtual Status ReadRegisterRaw(uint32_t reg_index, RegisterValue &reg_value);
28+
29+
virtual Status WriteRegisterRaw(uint32_t reg_index,
30+
const RegisterValue &reg_value);
31+
32+
virtual Status ReadRegisterSet(void *buf, size_t buf_size,
33+
unsigned int regset);
34+
35+
virtual Status WriteRegisterSet(void *buf, size_t buf_size,
36+
unsigned int regset);
37+
38+
virtual Status ReadGPR();
39+
40+
virtual Status WriteGPR();
41+
42+
virtual Status ReadFPR();
43+
44+
virtual Status WriteFPR();
45+
46+
virtual Status ReadVMX();
47+
48+
virtual Status WriteVMX();
49+
50+
virtual Status ReadVSX();
51+
52+
virtual Status WriteVSX();
53+
54+
virtual void *GetGPRBuffer() = 0;
55+
56+
virtual size_t GetGPRSize() = 0;
57+
58+
virtual void *GetFPRBuffer() = 0;
59+
60+
virtual size_t GetFPRSize() = 0;
61+
62+
// The Do*** functions are executed on the privileged thread and can perform
63+
// ptrace operations directly.
64+
virtual Status DoReadRegisterValue(uint32_t offset, const char *reg_name,
65+
uint32_t size, RegisterValue &value);
66+
67+
virtual Status DoWriteRegisterValue(uint32_t offset, const char *reg_name,
68+
const RegisterValue &value);
69+
};
70+
71+
} // namespace process_aix
72+
} // namespace lldb_private
73+
74+
#endif // #ifndef lldb_NativeRegisterContextAIX_h

0 commit comments

Comments
 (0)