[Lldb-commits] [lldb] bda5fe8 - [lldb] [gdb-remote] Fix displaying i387_ext & vec regs with gdbserver
Michał Górny via lldb-commits
lldb-commits at lists.llvm.org
Tue Oct 12 06:16:11 PDT 2021
Author: Michał Górny
Date: 2021-10-12T15:16:06+02:00
New Revision: bda5fe8f0c049f8c805572ba9eb92ce6044e7999
URL: https://github.com/llvm/llvm-project/commit/bda5fe8f0c049f8c805572ba9eb92ce6044e7999
DIFF: https://github.com/llvm/llvm-project/commit/bda5fe8f0c049f8c805572ba9eb92ce6044e7999.diff
LOG: [lldb] [gdb-remote] Fix displaying i387_ext & vec regs with gdbserver
Adjust the encoding and format applied to i387_ext and vec* type
registers from gdbserver to match lldb-server. Both types are now
displayed as vector of uint8 instead of float and integer formats used
before. Additionally, this fixes display of STi registers when they do
not carry floating-point data (they are also used to hold MMX vectors).
Differential Revision: https://reviews.llvm.org/D108468
Added:
Modified:
lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py
Removed:
################################################################################
diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
index 0e77ab01d0bd0..1a5f4a2beea89 100644
--- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
+++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
@@ -4312,10 +4312,12 @@ bool ParseRegisters(XMLNode feature_node, GdbServerTargetInfo &target_info,
} else if (gdb_type == "data_ptr" || gdb_type == "code_ptr") {
reg_info.format = eFormatAddressInfo;
reg_info.encoding = eEncodingUint;
- } else if (gdb_type == "i387_ext" || gdb_type == "float") {
+ } else if (gdb_type == "float") {
reg_info.format = eFormatFloat;
reg_info.encoding = eEncodingIEEE754;
- } else if (gdb_type == "aarch64v") {
+ } else if (gdb_type == "aarch64v" ||
+ llvm::StringRef(gdb_type).startswith("vec") ||
+ gdb_type == "i387_ext") {
reg_info.format = eFormatVectorOfUInt8;
reg_info.encoding = eEncodingVector;
}
diff --git a/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py b/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py
index 1a83b673cac0f..0533aec27eaa9 100644
--- a/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py
+++ b/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py
@@ -151,6 +151,18 @@ def haltReason(self):
self.match("register read flags",
["eflags = 0x94939291"])
+ # both stX and xmmX should be displayed as vectors
+ self.match("register read st0",
+ ["st0 = {0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a}"])
+ self.match("register read st1",
+ ["st1 = {0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a}"])
+ self.match("register read xmm0",
+ ["xmm0 = {0x81 0x82 0x83 0x84 0x85 0x86 0x87 0x88 "
+ "0x89 0x8a 0x8b 0x8c 0x8d 0x8e 0x8f 0x90}"])
+ self.match("register read xmm1",
+ ["xmm1 = {0x91 0x92 0x93 0x94 0x95 0x96 0x97 0x98 "
+ "0x99 0x9a 0x9b 0x9c 0x9d 0x9e 0x9f 0xa0}"])
+
@skipIfXmlSupportMissing
@skipIfRemote
@skipIfLLVMTargetMissing("X86")
@@ -265,6 +277,18 @@ def haltReason(self):
self.match("register read flags",
["eflags = 0x94939291"])
+ # both stX and xmmX should be displayed as vectors
+ self.match("register read st0",
+ ["st0 = {0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a}"])
+ self.match("register read st1",
+ ["st1 = {0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a}"])
+ self.match("register read xmm0",
+ ["xmm0 = {0x81 0x82 0x83 0x84 0x85 0x86 0x87 0x88 "
+ "0x89 0x8a 0x8b 0x8c 0x8d 0x8e 0x8f 0x90}"])
+ self.match("register read xmm1",
+ ["xmm1 = {0x91 0x92 0x93 0x94 0x95 0x96 0x97 0x98 "
+ "0x99 0x9a 0x9b 0x9c 0x9d 0x9e 0x9f 0xa0}"])
+
@skipIfXmlSupportMissing
@skipIfRemote
@skipIfLLVMTargetMissing("AArch64")
More information about the lldb-commits
mailing list