[Lldb-commits] [PATCH] D106832: [lldb] [gdb-remote client] Avoid zero padding PID/TID

Michał Górny via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Mon Jul 26 15:05:00 PDT 2021


mgorny created this revision.
mgorny added reviewers: JDevlieghere, krytarowski, emaste, rovka, ted.
mgorny requested review of this revision.

Change SetCurrentThread*() logic not to include the zero padding
in PID/TID that was a side effect of 02ef0f5ab483 <https://reviews.llvm.org/rG02ef0f5ab483875b7b6b38e24b245e4fd4053959>.  This should fix
problems caused by sending 64-bit integers to 32-bit servers.  Reported
by Ted Woodward.


https://reviews.llvm.org/D106832

Files:
  lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
  lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationClientTest.cpp


Index: lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationClientTest.cpp
===================================================================
--- lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationClientTest.cpp
+++ lldb/unittests/Process/gdb-remote/GDBRemoteCommunicationClientTest.cpp
@@ -98,7 +98,7 @@
   });
 
   Handle_QThreadSuffixSupported(server, false);
-  HandlePacket(server, "Hg0000000000000047", "OK");
+  HandlePacket(server, "Hg47", "OK");
   HandlePacket(server, "P4=" + one_register_hex, "OK");
   ASSERT_TRUE(write_result.get());
 
@@ -143,7 +143,7 @@
     return client.SaveRegisterState(tid, save_id);
   });
   Handle_QThreadSuffixSupported(server, false);
-  HandlePacket(server, "Hg0000000000000047", "OK");
+  HandlePacket(server, "Hg47", "OK");
   HandlePacket(server, "QSaveRegisterState", "1");
   ASSERT_TRUE(async_result.get());
   EXPECT_EQ(1u, save_id);
Index: lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
===================================================================
--- lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
+++ lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
@@ -2639,16 +2639,13 @@
   packet.PutChar('H');
   packet.PutChar(op);
 
-  if (pid != LLDB_INVALID_PROCESS_ID) {
-    packet.PutChar('p');
-    packet.PutHex64(pid);
-    packet.PutChar('.');
-  }
+  if (pid != LLDB_INVALID_PROCESS_ID)
+    packet.Printf("p%" PRIx64 ".", pid);
 
   if (tid == UINT64_MAX)
     packet.PutCString("-1");
   else
-    packet.PutHex64(tid);
+    packet.Printf("%" PRIx64, tid);
 
   StringExtractorGDBRemote response;
   if (SendPacketAndWaitForResponse(packet.GetString(), response) 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D106832.361817.patch
Type: text/x-patch
Size: 1709 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20210726/45936477/attachment.bin>


More information about the lldb-commits mailing list