summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
diff options
context:
space:
mode:
authorTodd Fiala <todd.fiala@gmail.com>2014-09-15 15:31:11 +0000
committerTodd Fiala <todd.fiala@gmail.com>2014-09-15 15:31:11 +0000
commit5c9d5bf81e4c09e97f1bfbfe122a6a0edf833cce (patch)
tree604adae9a424d0baafc3fd3d4a86b89ed1fa774b /lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
parentb82ad2a8b829648425913284a24d980da3b16e16 (diff)
downloadbcm5719-llvm-5c9d5bf81e4c09e97f1bfbfe122a6a0edf833cce.tar.gz
bcm5719-llvm-5c9d5bf81e4c09e97f1bfbfe122a6a0edf833cce.zip
Check for byte order correctness in GDBRemoteCommunicationClient::GetCurrentProcessInfo.
This is useful for checking inconsistencies between what the remote debug server thinks we are debugging and we think we are debugging. This follows the check for pointer byte size done just above. Change by Stephane Sezer. Tested: Ubuntu 14.04 x86_64, llvm-3.5-built lldb MacOSX 10.9.4, Xcode-Beta(2014-09-09)-built lldb. llvm-svn: 217773
Diffstat (limited to 'lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp')
-rw-r--r--lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
index fab98c09662..13f767bcd0f 100644
--- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
+++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
@@ -2426,6 +2426,7 @@ GDBRemoteCommunicationClient::GetCurrentProcessInfo ()
std::string triple;
uint32_t pointer_byte_size = 0;
StringExtractor extractor;
+ ByteOrder byte_order = eByteOrderInvalid;
uint32_t num_keys_decoded = 0;
lldb::pid_t pid = LLDB_INVALID_PROCESS_ID;
while (response.GetNameColonValue(name, value))
@@ -2459,10 +2460,15 @@ GDBRemoteCommunicationClient::GetCurrentProcessInfo ()
}
else if (name.compare("endian") == 0)
{
- if (value.compare("little") == 0 ||
- value.compare("big") == 0 ||
- value.compare("pdp") == 0)
- ++num_keys_decoded;
+ ++num_keys_decoded;
+ if (value.compare("little") == 0)
+ byte_order = eByteOrderLittle;
+ else if (value.compare("big") == 0)
+ byte_order = eByteOrderBig;
+ else if (value.compare("pdp") == 0)
+ byte_order = eByteOrderPDP;
+ else
+ --num_keys_decoded;
}
else if (name.compare("ptrsize") == 0)
{
@@ -2501,6 +2507,10 @@ GDBRemoteCommunicationClient::GetCurrentProcessInfo ()
{
assert (pointer_byte_size == m_process_arch.GetAddressByteSize());
}
+ if (byte_order != eByteOrderInvalid)
+ {
+ assert (byte_order == m_process_arch.GetByteOrder());
+ }
m_process_arch.GetTriple().setVendorName (llvm::StringRef (vendor_name));
m_process_arch.GetTriple().setOSName(llvm::StringRef (os_name));
m_host_arch.GetTriple().setVendorName (llvm::StringRef (vendor_name));
OpenPOWER on IntegriCloud