summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Process/Utility
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Plugins/Process/Utility')
-rw-r--r--lldb/source/Plugins/Process/Utility/RegisterContextLinux_i386.cpp4
-rw-r--r--lldb/source/Plugins/Process/Utility/RegisterContextLinux_i386.h2
-rw-r--r--lldb/source/Plugins/Process/Utility/RegisterContextLinux_x86_64.cpp5
-rw-r--r--lldb/source/Plugins/Process/Utility/RegisterContextLinux_x86_64.h2
-rw-r--r--lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_x86.cpp4
-rw-r--r--lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_x86.h2
-rw-r--r--lldb/source/Plugins/Process/Utility/RegisterInfoInterface.h2
7 files changed, 21 insertions, 0 deletions
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextLinux_i386.cpp b/lldb/source/Plugins/Process/Utility/RegisterContextLinux_i386.cpp
index 6563796db12..2eebaddcecc 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextLinux_i386.cpp
+++ b/lldb/source/Plugins/Process/Utility/RegisterContextLinux_i386.cpp
@@ -111,6 +111,10 @@ RegisterContextLinux_i386::RegisterContextLinux_i386(
size_t RegisterContextLinux_i386::GetGPRSize() const { return sizeof(GPR); }
+size_t RegisterContextLinux_i386::GetFXSAVEOffset() const {
+ return (LLVM_EXTENSION offsetof(UserArea, i387));
+}
+
const RegisterInfo *RegisterContextLinux_i386::GetRegisterInfo() const {
switch (m_target_arch.GetMachine()) {
case llvm::Triple::x86:
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextLinux_i386.h b/lldb/source/Plugins/Process/Utility/RegisterContextLinux_i386.h
index fbf803789cc..bb6707b0ed7 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextLinux_i386.h
+++ b/lldb/source/Plugins/Process/Utility/RegisterContextLinux_i386.h
@@ -18,6 +18,8 @@ public:
size_t GetGPRSize() const override;
+ size_t GetFXSAVEOffset() const override;
+
const lldb_private::RegisterInfo *GetRegisterInfo() const override;
uint32_t GetRegisterCount() const override;
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextLinux_x86_64.cpp b/lldb/source/Plugins/Process/Utility/RegisterContextLinux_x86_64.cpp
index 526b3eca81a..6f4bb800c4d 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextLinux_x86_64.cpp
+++ b/lldb/source/Plugins/Process/Utility/RegisterContextLinux_x86_64.cpp
@@ -179,6 +179,11 @@ RegisterContextLinux_x86_64::RegisterContextLinux_x86_64(
size_t RegisterContextLinux_x86_64::GetGPRSize() const { return sizeof(GPR); }
+size_t RegisterContextLinux_x86_64::GetFXSAVEOffset() const {
+ return (LLVM_EXTENSION offsetof(UserArea, fpr) +
+ LLVM_EXTENSION offsetof(FPR, xstate));
+}
+
const std::vector<lldb_private::RegisterInfo> *
RegisterContextLinux_x86_64::GetDynamicRegisterInfoP() const {
return &d_register_infos;
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextLinux_x86_64.h b/lldb/source/Plugins/Process/Utility/RegisterContextLinux_x86_64.h
index 99a4cb73679..e9e3e8bffde 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextLinux_x86_64.h
+++ b/lldb/source/Plugins/Process/Utility/RegisterContextLinux_x86_64.h
@@ -18,6 +18,8 @@ public:
size_t GetGPRSize() const override;
+ size_t GetFXSAVEOffset() const override;
+
const lldb_private::RegisterInfo *GetRegisterInfo() const override;
uint32_t GetRegisterCount() const override;
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_x86.cpp b/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_x86.cpp
index 77f3fcb0e9c..d6f67cbc0bd 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_x86.cpp
+++ b/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_x86.cpp
@@ -419,6 +419,10 @@ size_t RegisterContextPOSIX_x86::GetGPRSize() {
return m_register_info_ap->GetGPRSize();
}
+size_t RegisterContextPOSIX_x86::GetFXSAVEOffset() {
+ return m_register_info_ap->GetFXSAVEOffset();
+}
+
const RegisterInfo *RegisterContextPOSIX_x86::GetRegisterInfo() {
// Commonly, this method is overridden and g_register_infos is copied and
// specialized.
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_x86.h b/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_x86.h
index 22f3493b4ee..c5afe089e47 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_x86.h
+++ b/lldb/source/Plugins/Process/Utility/RegisterContextPOSIX_x86.h
@@ -38,6 +38,8 @@ public:
virtual size_t GetGPRSize();
+ virtual size_t GetFXSAVEOffset();
+
virtual unsigned GetRegisterSize(unsigned reg);
virtual unsigned GetRegisterOffset(unsigned reg);
diff --git a/lldb/source/Plugins/Process/Utility/RegisterInfoInterface.h b/lldb/source/Plugins/Process/Utility/RegisterInfoInterface.h
index 12db366d7a5..a0776407908 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterInfoInterface.h
+++ b/lldb/source/Plugins/Process/Utility/RegisterInfoInterface.h
@@ -29,6 +29,8 @@ public:
virtual size_t GetGPRSize() const = 0;
+ virtual size_t GetFXSAVEOffset() const { return 0; }
+
virtual const lldb_private::RegisterInfo *GetRegisterInfo() const = 0;
// Returns the number of registers including the user registers and the
OpenPOWER on IntegriCloud