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)
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)
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits