From 545304d323d6bbebdddcd93a7b657e761b8df168 Mon Sep 17 00:00:00 2001 From: Jason Molenda Date: Fri, 18 Dec 2015 00:45:35 +0000 Subject: The lldb side changes to go along with r255711 where a new "thread-pcs" key is added to the T (questionmark) packet in gdb-remote protocol so that lldb doesn't need to query the pc values of every thread before it resumes a process. The only odd part with this is that I'm sending the pc values in big endian order, so we need to know the endianness of the remote process before we can use them. All other register values in gdb-remote protocol are sent in native-endian format so this requirement doesn't exist. This addition is a performance enhancement -- lldb will fall back to querying the pc of each thread individually if it needs to -- so when we don't have the byte order for the process yet, we don't use these values. Practically speaking, the only way I've been able to elicit this condition is for the first T packet when we attach to a process. llvm-svn: 255942 --- lldb/source/Plugins/Process/gdb-remote/ThreadGDBRemote.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'lldb/source/Plugins/Process/gdb-remote/ThreadGDBRemote.cpp') diff --git a/lldb/source/Plugins/Process/gdb-remote/ThreadGDBRemote.cpp b/lldb/source/Plugins/Process/gdb-remote/ThreadGDBRemote.cpp index d2a6503..9b410d8 100644 --- a/lldb/source/Plugins/Process/gdb-remote/ThreadGDBRemote.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/ThreadGDBRemote.cpp @@ -313,6 +313,14 @@ ThreadGDBRemote::PrivateSetRegisterValue (uint32_t reg, StringExtractor &respons } bool +ThreadGDBRemote::PrivateSetRegisterValue (uint32_t reg, uint64_t regval) +{ + GDBRemoteRegisterContext *gdb_reg_ctx = static_cast(GetRegisterContext ().get()); + assert (gdb_reg_ctx); + return gdb_reg_ctx->PrivateSetRegisterValue (reg, regval); +} + +bool ThreadGDBRemote::CalculateStopInfo () { ProcessSP process_sp (GetProcess()); -- cgit v1.1