-
Notifications
You must be signed in to change notification settings - Fork 15.2k
[lldb] support ieee_single and ieee_double gdbtypes for registers #150268
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
@llvm/pr-subscribers-lldb Author: satyanarayana reddy janga (satyajanga) ChangesSome gdb remote servers send target.xml that contains it seems like a valid and supported type in gdb. Testplanupdated unittest to test this. Full diff: https://github.com/llvm/llvm-project/pull/150268.diff 2 Files Affected:
diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
index a2c34ddfc252e..4c6d584383747 100644
--- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
+++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
@@ -4783,7 +4783,8 @@ bool ParseRegisters(
} else if (gdb_type == "data_ptr" || gdb_type == "code_ptr") {
reg_info.format = eFormatAddressInfo;
reg_info.encoding = eEncodingUint;
- } else if (gdb_type == "float") {
+ } else if (gdb_type == "float" || gdb_type == "ieee_single" ||
+ gdb_type == "ieee_double") {
reg_info.format = eFormatFloat;
reg_info.encoding = eEncodingIEEE754;
} else if (gdb_type == "aarch64v" ||
diff --git a/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py b/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py
index 9a70f67b264ce..db5b5a0e0d0cb 100644
--- a/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py
+++ b/lldb/test/API/functionalities/gdb_remote_client/TestGDBServerTargetXML.py
@@ -692,6 +692,9 @@ class MyResponder(MockGDBServerResponder):
"0102030405060708" # t4
"0102030405060708" # t5
"0102030405060708" # t6
+ "6162636465666768" # pc
+ "0000C03F" # ft0
+ "e07a6147a8a40940" # ft1
)
def qXferRead(self, obj, annex, offset, length):
@@ -737,6 +740,10 @@ def qXferRead(self, obj, annex, offset, length):
<reg name="t6" bitsize="64" type="int"/>
<reg name="pc" bitsize="64" type="code_ptr"/>
</feature>
+ <feature name='org.gnu.gdb.riscv.fpu'>
+ <reg name='ft0' bitsize='32' type='ieee_single'/>
+ <reg name='ft1' bitsize='64' type='ieee_double'/>
+ </feature>
</target>""",
False,
)
@@ -799,6 +806,10 @@ def haltReason(self):
self.match("register read x29", ["t4 = 0x0807060504030201"])
self.match("register read x30", ["t5 = 0x0807060504030201"])
self.match("register read x31", ["t6 = 0x0807060504030201"])
+ self.match("register read pc", ["pc = 0x6867666564636261"])
+ # test FPU registers
+ self.match("register read ft0", ["ft0 = 1.5"])
+ self.match("register read ft1", ["ft1 = 3.2053990913985757"])
@skipIfXmlSupportMissing
@skipIfRemote
|
DavidSpickett
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me, nice to see more GDB compatibility, but I'll leave it to your chosen reviewers to approve.
| "0102030405060708" # t4 | ||
| "0102030405060708" # t5 | ||
| "0102030405060708" # t6 | ||
| "6162636465666768" # pc |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess that we just didn't provide data for the PC before? Surprised that the test worked at all.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The test also was't validating for pc before. the stop reply packet (from haltReason func) has the PC
Thank you for your review. the review bot only assigned one reviewer. so I added some more internal reviewers to get faster review. |
|
@satyajanga merged for you |
Some gdb remote servers send target.xml that contains
it seems like a valid and supported type in gdb.
from gdb16.3/gdb/target_descriptions.c (could not find a way to link it).
Testplan
updated unittest to test this.
Reviewers: @clayborg , @jeffreytan81 , @Jlalond