diff options
author | Jason Molenda <jmolenda@apple.com> | 2018-09-12 21:35:02 +0000 |
---|---|---|
committer | Jason Molenda <jmolenda@apple.com> | 2018-09-12 21:35:02 +0000 |
commit | 9d0f9ced40627bb2d1566546c2ebe861ff44284c (patch) | |
tree | fb3b05a85f25848cd18dc4b8dae084ebb4c7d9f5 /lldb/packages/Python/lldbsuite/test/functionalities | |
parent | 300f42fbce713633f77aee0c16e84f1ce840102b (diff) | |
download | bcm5719-llvm-9d0f9ced40627bb2d1566546c2ebe861ff44284c.tar.gz bcm5719-llvm-9d0f9ced40627bb2d1566546c2ebe861ff44284c.zip |
Commit my attempt to test the change to ProcessGDBRemote
in r336956. This test doesn't actually test the change
that was submitted by Venkata, but it's a good one to
add.
llvm-svn: 342085
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/functionalities')
-rw-r--r-- | lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestStopPCs.py | 44 | ||||
-rw-r--r-- | lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/gdbclientutils.py | 8 |
2 files changed, 52 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestStopPCs.py b/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestStopPCs.py new file mode 100644 index 00000000000..0a3d9a5efc7 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/TestStopPCs.py @@ -0,0 +1,44 @@ +from __future__ import print_function +import lldb +from lldbsuite.test.lldbtest import * +from lldbsuite.test.decorators import * +from gdbclientutils import * + + +class TestThreadSelectionBug(GDBRemoteTestBase): + def test(self): + class MyResponder(MockGDBServerResponder): + def haltReason(self): + return "T02thread:1ff0d;threads:1ff0d,2ff0d;thread-pcs:10001bc00,10002bc00;" + + def threadStopInfo(self, threadnum): + if threadnum == 0x1ff0d: + return "T02thread:1ff0d;threads:1ff0d,2ff0d;thread-pcs:10001bc00,10002bc00;" + if threadnum == 0x2ff0d: + return "T00thread:2ff0d;threads:1ff0d,2ff0d;thread-pcs:10001bc00,10002bc00;" + + def qXferRead(self, obj, annex, offset, length): + if annex == "target.xml": + return """<?xml version="1.0"?> + <target version="1.0"> + <architecture>i386:x86-64</architecture> + <feature name="org.gnu.gdb.i386.core"> + <reg name="rip" bitsize="64" regnum="0" type="code_ptr" group="general"/> + </feature> + </target>""", False + else: + return None, False + + self.server.responder = MyResponder() + target = self.dbg.CreateTarget('') + if self.TraceOn(): + self.runCmd("log enable gdb-remote packets") + process = self.connect(target) + + self.assertEqual(process.GetNumThreads(), 2) + th0 = process.GetThreadAtIndex(0) + th1 = process.GetThreadAtIndex(1) + self.assertEqual(th0.GetThreadID(), 0x1ff0d) + self.assertEqual(th1.GetThreadID(), 0x2ff0d) + self.assertEqual(th0.GetFrameAtIndex(0).GetPC(), 0x10001bc00) + self.assertEqual(th1.GetFrameAtIndex(0).GetPC(), 0x10002bc00) diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/gdbclientutils.py b/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/gdbclientutils.py index b86a0c6bad8..9a81f32403d 100644 --- a/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/gdbclientutils.py +++ b/lldb/packages/Python/lldbsuite/test/functionalities/gdb_remote_client/gdbclientutils.py @@ -130,6 +130,8 @@ class MockGDBServerResponder: return self.QEnableErrorStrings() if packet == "?": return self.haltReason() + if packet == "s": + return self.haltReason() if packet[0] == "H": return self.selectThread(packet[1], int(packet[2:], 16)) if packet[0:6] == "qXfer:": @@ -144,6 +146,9 @@ class MockGDBServerResponder: return self.vAttach(int(pid, 16)) if packet[0] == "Z": return self.setBreakpoint(packet) + if packet.startswith("qThreadStopInfo"): + threadnum = int (packet[15:], 16) + return self.threadStopInfo(threadnum) return self.other(packet) def interrupt(self): @@ -204,6 +209,9 @@ class MockGDBServerResponder: def setBreakpoint(self, packet): raise self.UnexpectedPacketException() + def threadStopInfo(self, threadnum): + return "" + def other(self, packet): # empty string means unsupported return "" |