summaryrefslogtreecommitdiffstats
path: root/lldb/test/tools/lldb-gdbserver/TestLldbGdbServer.py
Commit message (Collapse)AuthorAgeFilesLines
* Rename test/tools/lldb-gdbserver to test/tools/lldb-serverRobert Flack2015-03-061-1501/+0
| | | | | | | | As requested in http://reviews.llvm.org/D7545 this change moves test/tools/lldb-gdbserver to test/tools/lldb-server ot match the name of the target being tested. Differential Revision: http://reviews.llvm.org/D8061 llvm-svn: 231479
* Properly specify a few checksum values for llgs tests.Stephane Sezer2014-11-201-4/+4
| | | | | | | | | | | | | | Summary: In noack mode, these checksums are ignored by llgs, but some implementations need them still. Specify these checksums to ease integration. Test Plan: Run the tests before and after the change and make sure nothing breaks. Reviewers: clayborg, tfiala Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D6343 llvm-svn: 222441
* Specify checksums properly for llgs test suite packets.Stephane Sezer2014-11-131-11/+11
| | | | | | | | | | | | | | Summary: These checksums are ignored by llgs but some implementations require them to be specified properly. Test Plan: Re-run llgs tests with the checksums and make sure we don't break anything. Reviewers: tfiala, clayborg Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D6254 llvm-svn: 221927
* Fix a test broken by r216564.Todd Fiala2014-08-291-4/+6
| | | | | | | | | | | | | | llgs Linux is no longer doing the translation to some gdb fixed signal numbers. This change modifies the test method to take in the signo expected for a segfault. The debugserver test uses the fixed gdb number, and everything else uses signal.SIGSEGV for the platform. Sidenote: I somehow did not see this reported in multicore tests. I will need to verify that we aren't missing test failures in that script. I need to verify why this wasn't more obvious with test/dosep.py. llvm-svn: 216770
* Refactored existing gdb-remote qProcessInfo tests into separate python file.Todd Fiala2014-08-261-101/+0
| | | | | | | | | I'm about to add some more qProcessInfo tests so I wanted to first pull them out of the monolithic TestLldbGdbServer test case class. Related to http://llvm.org/bugs/show_bug.cgi?id=20755 llvm-svn: 216465
* gdb-remote test noise suppression on MacOSX.Todd Fiala2014-07-161-34/+0
| | | | | | | | | | | | | | | | | | | | This change adds a member to the base test case for gdb-remote that indicates whether a stub makes two X stop notification reports on kill commands. This is set to true for debugserver tests. The test for killing an attached process after it's first stop notification has been modified to look at that flag and add an extra X packet matcher so the "unmatched packet warning" doesn't get emitted for the second X on MacOSX with debugserver. I also broke those tests out of the monolithic TestLldbGdbServer mega test case and put it in its own, new TestGdbRemoteKill.py file and test case. Tested: Ubuntu 14.04 x86_64, clang-3.5 built lldb, no test failures. MacOSX 10.9.4, Xcode 6.0 Beta 3 built lldb, no test failures. llvm-svn: 213166
* Add lldb-gdbserver support for Linux x86_64.Todd Fiala2014-06-301-37/+0
| | | | | | | | | | | | | | | | | | | | | This change brings in lldb-gdbserver (llgs) specifically for Linux x86_64. (More architectures coming soon). Not every debugserver option is covered yet. Currently the lldb-gdbserver command line can start unattached, start attached to a pid (process-name attach not supported yet), or accept lldb attaching and launching a process or connecting by process id. The history of this large change can be found here: https://github.com/tfiala/lldb/tree/dev-tfiala-native-protocol-linux-x86_64 Until mid/late April, I was not sharing the work and continued to rebase it off of head (developed via id tfiala@google.com). I switched over to user todd.fiala@gmail.com in the middle, and once I went to github, I did merges rather than rebasing so I could share with others. llvm-svn: 212069
* Implemented gdb-remote protocol tests for vCont;s and vCont;s:{thread}Todd Fiala2014-06-271-160/+0
| | | | | | | | | | | | | Also added tests for presence of vCont;c, vCont;C, vCont;s, vCont;S as returned by vCont? query. Broke out single step functionality from TestLldbGdbServer into base class. Used by new TestGdbRemoteSingleStep (using $s) and TestGdbRemote_vCont. Also part of llgs wrap-up, see: https://github.com/tfiala/lldb/issues/12 llvm-svn: 211965
* Added gdb-remote tests for Q{Save,Restore}RegisterState.Todd Fiala2014-06-201-94/+1
| | | | | | | | | Tests for both thread suffix and no thread suffix execution. Moved some bit-flipping helper methods from TestLldbGdbServer into the base GdbRemoteTestCaseBase class. llvm-svn: 211381
* Sync accumulated minor diffs in llgs branch gdb-remote tests.Todd Fiala2014-06-131-44/+163
| | | | | | | | I've been making some subtle changes to the gdb-remote tests as I implement them in the llgs branch. This check-in rectifies the set of diffs that have accumulated in the llgs branch that were not present upstream. llvm-svn: 210957
* Added gdb-remote stop packet expedited register tests.Todd Fiala2014-06-131-532/+41
| | | | | | | | | | | | | | | | | | | | | | | | | Expedited registers currently checked for are pc, fp and sp. Also broke out the gdb-remote base test case logic into class gdbremote_testcase.GdbRemoteTestCaseBase in the new gdbremote_testcase.py file. TestGdbRemoteExpeditedRegisters.py is the first gdb-remote area to be contained in its own test case class file. The monolithic TestLldbGdbServer.py has been modified to derive from gdbremote_testcase.GdbRemoteTestCaseBase. Soon I will pull out all the gdb-remote functional area tests from that class into separate classes. I'm intending to start all GdbRemote test cases with GdbRemote so it is easy to run them all with a -p pattern match on the test run infrastructure. Also scanned and removed all cases of whitespace-only lines in the files I touched. llvm-svn: 210931
* Fix up extra whitespace from previous commit.Todd Fiala2014-06-121-3/+3
| | | | llvm-svn: 210821
* Added gdb-remote P/p thread suffix test.Todd Fiala2014-06-121-21/+165
| | | | | | | | | | | | Improved the P writes all GPR register values test. It now limits itself to GPR registers that are not containers for other registers. Pulled in improvements from the llgs branch. Note on Linux llgs I'm able to write a much wider range of registers successfully with $P using the bitflip test than I am able to write with debugserver. Might be worth drilling into. llvm-svn: 210818
* Add gdb-remote P register write test.Todd Fiala2014-06-111-1/+129
| | | | | | | | | | | | | | | | Added test that attempts to write a value to each general purpose register that is bit-flipped from the initial read value. It then reads it back to see if it takes. Right now I just assert that at least one register bit flip write succeeds. I added a note that on the MacOSX x86_64 debugserver case, the only writes that succeed from the GPR set are rax thru rdx, rdi, rsi and rbp. The failures are E32 failure-at-write-attempt issues on the debugserver end. I'll revisit this after implementing in the llgs linux-x86_64 branch. The packet log looks good but I may have a subtle mistake in the code. llvm-svn: 210681
* Fixed gdb-remote M test length parameter, added overwrite to test.Todd Fiala2014-06-101-6/+5
| | | | | | | | | | Initial check-in provided a nibble count instead of byte count for the memory to write. Fixed that. Enhanced test to check for overwrite past the expected range of writing to verify the correct amount is written. llvm-svn: 210602
* Added gdb-remote test to verify M memory write.Todd Fiala2014-06-101-1/+63
| | | | llvm-svn: 210594
* Added gdb-remote tests around $qSupported.Todd Fiala2014-06-101-1/+77
| | | | | | | Right now it just checks that qSupported returns at least one recognized gdb stub feature. llvm-svn: 210573
* Added gdb-remote test for s packet, single stepping.Todd Fiala2014-06-091-18/+191
| | | | llvm-svn: 210481
* Remove invalid comment from last commit.Todd Fiala2014-06-061-1/+0
| | | | llvm-svn: 210376
* Added gdb-remote program counter check at breakpoint.Todd Fiala2014-06-061-80/+161
| | | | | | | | | | | | | | | | | | | | | | | | | Modified the breakpoint stop and start check to verify the program counter printed immediately after stopping does match the breakpoint address. This is based on a conversation with Greg Clayton clarifying that the breakpoint stop handling code on a remote should do any and all adjusting of the program counter at stop time, not at resume time. Added a qProcessInfo parser and helper methods to add the collection send/response elements to the packet flow. Removed the older pid-only query mechanism. The parser verifies all the keys provided are within the documented known set of key-value pairs. Added helper routine to unpack the hex value of a $p-style register read response according to the endian-ness of the inferior as reported by qProcessInfo. Added a test to verify qProcessInfo includes an endian key/value pair. Refactored several older tests to move to the less verbose test startup code. Most of these were the tests using the older qProcessInfo pid-only retrieval code. llvm-svn: 210374
* Added gdb-remote test for software breakpoints.Todd Fiala2014-06-051-2/+97
| | | | | | | | | | Tests $Z0 and $z0. Extends test exe get-code-address-hex: to take a function name. Enabled for debugserver, disabled for llgs. Implementing in llgs branch next. llvm-svn: 210272
* Added gdb-remote $qMemoryRegionInfo tests for heap and stack.Todd Fiala2014-06-041-19/+154
| | | | | | | | | | | | | | | | | | Added two new tests: one to verify that a test exe heap address returned is readable and writeable, and a similar one to verify a test exe stack address is readable and writeable. Ran the main.cpp test exe code through the Xcode re-indenter. I was using TextMate to edit the test's C++ code alongside the Python code but last check-in found that it was not handling tabs/indentation the way I am intending it. Modified test exe to require C++11. Refactored gdb remote python code's handling of memory region info into more re-usable methods. llvm-svn: 210196
* Add gdb-remote test for $qMemoryRegionInfo code querying.Todd Fiala2014-06-041-1/+87
| | | | | | | | | | Added test stub for collecting a code, heap and stack address. Added test to verify that the code address returns a readable, executable memory region and that the memory region range was indeed the one that the code belonged to. llvm-svn: 210187
* Add gdb-remote test to ensure $qMemoryRegionInfo is supported.Todd Fiala2014-06-041-0/+29
| | | | llvm-svn: 210185
* Added gdb-remote memory read ($m) test.Todd Fiala2014-06-031-3/+64
| | | | | | | | | | | | Added set-memory:{content} and get-memory-address-hex: commands to the test exe for gdb-remote. Added a test that sets the content via the inferior command line, then reads it back via gdb-remote with $m. Passing on debugserver. Marked as fail on llgs. Implementing in the llgs branch next. llvm-svn: 210116
* gdb-remote signal delivery test cleanup.Todd Fiala2014-05-301-21/+54
| | | | | | | | | | | | | | | | Learned that MacOSX only accepts signal delivery on a thread that is already signal handling. Reworked the test exe to cause a SIGSEGV and recover if either nothing intercepts the SIGSEGV handler, or if a SIGUSR1 is inserted. The test uses the latter part to test signal delivery on continue using the SIGUSR1. I still don't have this working on MacOSX. I'm seeing the signal get delivered to a different thread than the one I'm specifying with $Hc{thread-id} + $C{signo}, or with $vCont;C{signo}:{thread-id};c. I'll come back to this after getting it working on the llgs branch on Linux x86_64. llvm-svn: 209912
* gdb-remote testing: new test, cleaned up socket reading.Todd Fiala2014-05-291-30/+95
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Added new SocketPacketPump class to decouple gdb remote packet reading from packet expectations code. This allowed for cleaner implementation of the separate $O output streams (non-deterministic packaging of inferior stdout/stderr) from all the rest of the packets. Added a packet expectation matcher that can match expected accumulated output with a timeout. Use a dictionary with "type":"output_match". See lldbgdbserverutils.MatchRemoteOutputEntry for details. Added a gdb remote test to verify that $Hc (continue thread selection) plus signal delivery ($C{signo}) works. Having trouble getting this to pass with debugserver on MacOSX 10.9. Tried different variants, including $vCont;C{signo}:{thread-id};c. In some cases, I get the test exe's signal handler to run ($vCont variant first time), in others I don't ($vCont second and further times). $C{signo} doesn't hit the signal handler code at all in the test exe but delivers a stop. Further $Hc and $C{signo} deliver the stop marking the wrong thread. For now I'm marking the test as XFAIL on dsym/debugserver. Will revisit this on lldb-dev. Updated the text exe for these tests to support thread:print-ids (each thread announces its thread id) and provide a SIGUSR1 thread handler that prints out the thread id on which it was signaled. llvm-svn: 209845
* Remove some unnecessary comments from previous check-in.Todd Fiala2014-05-231-51/+47
| | | | | | | | | | | Removed a "done" TODO comment. Moved some helper methods to the top of the unit test. Removed some commented out code I was considering implementing before I came up with a better overall approach. llvm-svn: 209561
* Added gdb remote tests to verify $Hg{thread-id}.Todd Fiala2014-05-231-2/+123
| | | | | | | | | | | | | | | | | | | | | Added test to check that each thread reported by $q{f,s}ThreadInfo can be switched to by $Hg, verified by a follow-up $qC. Modified test exe to accept "thread:new" to create a new thread that runs and sleeps for 5 seconds. @llgs_test/@debugserver_test now buffer output. llgs and debugserver gdbremote protocol tests now collect $O notification output into the context returned from expect_lldb_gdbserver_replay. context["O_count"] is an integer indicating the number of $O packets collected during the replay, and context["O_content"] contains the accumulated hex-decoded text output by the inferior (stdout and stderr). Modified the $O check test to check the accumulated output rather than a direct $O packet. llvm-svn: 209560
* Added gdbremote protocol test for $p and returned data size.Todd Fiala2014-05-221-0/+78
| | | | | | | | | | | | Each register returned by $qRegisterInfo is tested that it's $p register read returns a representation that is the correct byte size as indicated by $qRegisterInfo. Currently enabled for debugserver, disabled for llgs. The llgs branch will use this to verify $p implementation. llvm-svn: 209452
* Added tests for q{f,s}ThreadInfo for attached processes.Todd Fiala2014-05-211-28/+115
| | | | | | | | | | | | | | | | | | Added helper methods: prep_debug_monitor_and_inferior(): properly handles the two cases of running the stub against an inferior process launched by the stub, and one attached to by the stub. See docs for function: simplifies test creation for tests that want to test the same operations against a launched and attached inferior. Added the q{f,s}ThreadInfo and $qC response comparison test (verifies they both return the same thing) when the process is attached rather than launched by the stub. Modified the previous two tests added to make use of the new prep_debug_monitor_and_inferior() facility. llvm-svn: 209318
* Added gdb-remote tests for q{f,s}ThreadInfo.Todd Fiala2014-05-211-2/+116
| | | | | | | | | The First test verifies that qThreadInfo queries work for stub-launched processes. The second test verifies that $qC after stub-launched inferior returns the same thread as the qThreadInfo queries. llvm-svn: 209314
* Added gdb remote protocol tests across all qRegisterInfo responses.Todd Fiala2014-05-191-17/+155
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added support for gdb remote protocol capture/playback where there is a query/multiple-response pattern. The new playback entry supports: - a general query command (key: next_query or query) - an optional first-query command if that differs from the subsequent queries (key: first_query) - an end regex for matching anything that would signify that the query/multi-response iteration has come to an end. An assumption is that the end regex is not a content package we care about aside from ending the iteration. (key: end_regex) - an optional 0-based index appended to the end of the query command (key: append_iteration_suffix), default: False. - a key used to collect responses from the query. Any response from the gdb remote that doesn't match the end-of-iteration regex is captured in the playback context dictionary using the key specified. That key will be an array, where each array entry is one of the responses from the query/multi-response iteration. (key: save_key). - a runaway response value, defaulting to 10k, where if this many responses is captured, assume the ending condition regex is invalid, or the debug monitor is doing something goofy that is going to blow out memory or time. (key: runaway_response_count, default: 10000) See the lldbgdbserverutils.MultiResponseGdbRemoteEntry class for details. A MultiResponseGdbRemoteEntry is added by adding an element to the GdbRemoteTestSequence (via GdbRemoteTestSequence.add_log_lines), using a dictionary, where the "type" key is set to "multi_response", and the rest of the keys in the dictionary entry are set to the keys documented for MultiResponseGdbRemoteEntry. Added helper functions to add the required entry to grab all qRegisterInfo responses. Added another helper to parse the qRegisterInfo response packets into an array of dictionaries, where each key:value in the dictionary comes from the register info response packet. Added a test to verify that a generic register exists for the program counter, frame pointer, stack pointer and cpu flags across all register info responses. Added a test to verify that at least one register set exists across all register info responses. llvm-svn: 209170
* Added gdb remote test for one valid qRegisterInfo result.Todd Fiala2014-05-191-0/+70
| | | | | | | | | | | | Checks that at at least qRegisterInfo0 responds with a valid register info reply packet. The packet is parsed and validates that all keys come from the documented set of valid keys. It then validates that a minimum set of expected keys are present in the returned packet. This test is set to pass on debugserver and fail on llgs TOT. llvm-svn: 209109
* Add support for gdb remote $X stop notification.Todd Fiala2014-05-191-1/+1
| | | | | | | | | | | | | | debugserver now returns $X09 as the immediate response to a $k kill process request rather than $W09. ProcessGDBRemote now properly handles X as indication of a process exit state. The @debugserver_test and @lldb_test for $k now properly expects an X notification (signal-caused exit) after killing a just-attached inferior that was still in the stopped state. llvm-svn: 209108
* Added gdbremote tests to verify kill and continue after attach.Todd Fiala2014-05-141-9/+95
| | | | llvm-svn: 208804
* Added debugserver/llgs test for command-line --attach {pid} variant.Todd Fiala2014-05-141-2/+58
| | | | | | | | | Checks that the pid reported by $qProcessInfo matches the pid that was launched as the attach test subject. test exe now supports "sleep:{sleep_seconds}" command line argument. llvm-svn: 208782
* Modify debugserver to follow gdb remote $qC protocol definition.Todd Fiala2014-05-071-2/+42
| | | | | | | | | | $qC from debugserver now returns the current thread's thread-id (and, like $?, will set a current thread if one is not already selected). Previously it was returning the current process id. lldb will now query $qProcessInfo to retrieve the process id. The process id is now cached lazily and reset like other cached values. Retrieval of the process id will fall back to the old $qC method for vendor==Apple and os==iOS if the qProcessInfo retrieval fails. Added a gdb remote protocol-level test to verify that $qProcessInfo reports a valid process id after launching a process, while the process is in the initial stopped state. Verifies the given process id is a currently valid process on host OSes for which we know how to check (MacOSX, Linux, {Free/Net}BSD). Ignores the live process check for OSes where we don't know how to do this. (I saw no portable way to do this in stock Python without pulling in other libs). llvm-svn: 208241
* gdbremote testing: added regex support to match packets and propagate/test ↵Todd Fiala2014-05-061-18/+53
| | | | | | | | | | | against previously stored matches. Added a test validating that $qC after an inferior launch via $A returns a thread id that an immediately followig $? reports for the active thread. This is currently skipped on debugserver (the thread ids don't match) and isn't yet implemented in TOT for llgs. llvm-svn: 208061
* Refactored gdb remote protocol testing sequence handling.Todd Fiala2014-05-051-68/+65
| | | | | | | | | | | | | | | | | Pushed gdbremote protocol sequence expectations into a separate class and defer matching of llgs/debugserver output to the sequence entry. Pre-step to adding regex matching and grouped content collecting. No longer require anything before the read/send packet portion of slurped-up log lines used for setting up gdb remote test sequences. Several packet logging options produce a wide range of content before the read/send packet. Added helpers to TestLldbGdbServer to clean up test setup and test expectations matching. llvm-svn: 207998
* Added gdb remote protocol tests for no output and inferior non-zero exit code.Todd Fiala2014-04-291-14/+78
| | | | | | | | | | Tests added for debugserver and lldb-gdbserver. lldb-gdbserver marked as XFAIL on top of tree. Added build_gdbremote_A_packet test helper to construct a gdbremote A launch packet from a list of args. llvm-svn: 207568
* Added debugserver/llgs protocol test for output and clean exit.Todd Fiala2014-04-291-0/+39
| | | | | | | Tests for $vCont;c program start, $O output and $W status code. @llgs_test variant currently marked as expected fail. llvm-svn: 207492
* Added two new test types: @debugserver_test and @llgs_test.Todd Fiala2014-04-281-17/+64
| | | | | | | | | | | | | | | TestLldbGdbServer now supports both lldb-gdbserver (llgs) and debugserver tests. Similar to the dsym/dwarf tests, they allow running the same underlying gdb remote protocol tests against lldb-gdbserver and debugserver. This will help make sure the protocol-level tests for lldb-gdbserver faithfully represent what debugserver does on OS X. Switched back gdb remote protocol test logging to warning and above (accidentally submitted it at debug level in a recent commit). llvm-svn: 207395
* Added TestLldbGdbServer test for A start exe packet.Todd Fiala2014-04-251-4/+32
| | | | | | Fixed up bug in XFAIL tests where I appended an array when I intended to merge an array. llvm-svn: 207285
* Prevent TestLldbGdbServer shutdown cleanup failures from failing the test.Todd Fiala2014-04-251-4/+17
| | | | | | | | | | Adds try/except blocks around clean-up code. Prevents a race between gdb remote kill command reception by llgs (which leads llgs to shut down) and the pexpect server kill (which can fail if the kill command handling completes first). Warnings are emitted on the logger for any clean-up code that fails. llvm-svn: 207273
* Added a packet-playback test facility for lldb-gdbserver and a few starter ↵Todd Fiala2014-04-221-1/+82
| | | | | | | | | | | | | | | | | | | | | | | tests. lldbgdbserverutils.py has a new expect_lldb_gdbserver_replay() method that plays back gdb remote send/receive packets. These packets are the log lines that come from running the 'log enable gdb-remote packets', either from the lldb-gdbserver side or the lldb side. There's a flag to flip which side is the send (lldb-gdbserver input or lldb-gdbserver output). This first checkin tests the initial gdbremote handshake, the ability to turn on the no-ack mode communication style, thread suffix support, and list threads in stop reply support. The last two are marked xfail as top of tree does not yet support these. --This line, and those below, will be ignored-- M test/tools/lldb-gdbserver/TestLldbGdbServer.py M test/tools/lldb-gdbserver/lldbgdbserverutils.py llvm-svn: 206930
* Added a basic connection test for lldb-gdbserver.Todd Fiala2014-04-211-0/+40
The lldb-gdbserver tests are skipped if the lldb-gdbserver exe cannot be found (currently only built for Linux and FreeBSD). The lldb-gdbserver exe is found by the LLDB_EXEC environment variable, using the same dir as the lldb exe, and then replacing lldb with lldb-gdbserver. llvm-svn: 206731
OpenPOWER on IntegriCloud