diff options
author | Jason Molenda <jmolenda@apple.com> | 2015-12-18 00:45:35 +0000 |
---|---|---|
committer | Jason Molenda <jmolenda@apple.com> | 2015-12-18 00:45:35 +0000 |
commit | 545304d323d6bbebdddcd93a7b657e761b8df168 (patch) | |
tree | f17f00e522076977eb48896d516600eae1ad3b51 /lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h | |
parent | 545b8861fc40bb194d6e8daa382f9d6d4659a13b (diff) | |
download | bcm5719-llvm-545304d323d6bbebdddcd93a7b657e761b8df168.tar.gz bcm5719-llvm-545304d323d6bbebdddcd93a7b657e761b8df168.zip |
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.
<rdar://problem/21963031>
llvm-svn: 255942
Diffstat (limited to 'lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h')
-rw-r--r-- | lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h index 12094e78612..54749827d6a 100644 --- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h +++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h @@ -288,6 +288,7 @@ protected: typedef std::map<lldb::addr_t, lldb::addr_t> MMapMap; typedef std::map<uint32_t, std::string> ExpeditedRegisterMap; tid_collection m_thread_ids; // Thread IDs for all threads. This list gets updated after stopping + std::vector<lldb::addr_t> m_thread_pcs; // PC values for all the threads. StructuredData::ObjectSP m_jstopinfo_sp; // Stop info only for any threads that have valid stop infos StructuredData::ObjectSP m_jthreadsinfo_sp; // Full stop info, expedited registers and memory for all threads if "jThreadsInfo" packet is supported tid_collection m_continue_c_tids; // 'c' for continue @@ -384,6 +385,9 @@ protected: CalculateThreadStopInfo (ThreadGDBRemote *thread); size_t + UpdateThreadPCsFromStopReplyThreadsValue (std::string &value); + + size_t UpdateThreadIDsFromStopReplyThreadsValue (std::string &value); bool |