Commit Graph

2369 Commits

Author SHA1 Message Date
Caroline Tice 0de8d4503b Add ability to search backwards through command
history for a particular substring, using ctrl-r key.

llvm-svn: 130871
2011-05-04 21:39:02 +00:00
Johnny Chen 63cc1de58d Use '-f c' to print each element of a string as a char.
llvm-svn: 130865
2011-05-04 20:38:01 +00:00
Johnny Chen ca5942ffe3 Forgot to check in this change with r130811.
llvm-svn: 130848
2011-05-04 18:01:44 +00:00
Caroline Tice fe1bdf291f Minor cleanup: When asynchronous output comes along,
back up over and delete the prompt before writing out the
asynchronous output, rather than just going to a new line.

llvm-svn: 130843
2011-05-04 16:44:57 +00:00
Jim Ingham 2837b766f5 Change "frame var" over to using OptionGroups (and thus the OptionGroupVariableObjectDisplay).
Change the boolean "use_dynamic" over to a tri-state, no-dynamic, dynamic-w/o running target,
and dynamic with running target.

llvm-svn: 130832
2011-05-04 03:43:18 +00:00
Johnny Chen b5672c504c Make the negative test more robust in light of more than one lldb prompts being emitted
in one command invocation.

llvm-svn: 130811
2011-05-04 00:44:20 +00:00
Johnny Chen 24f3490467 Add comments about 'image' being an alias for 'target modules'.
llvm-svn: 130806
2011-05-03 23:55:05 +00:00
Johnny Chen 5aceec3319 Update the golden output strings to match against after the recent change.
llvm-svn: 130804
2011-05-03 23:18:45 +00:00
Johnny Chen fd7ff20575 Remove debug statement.
llvm-svn: 130802
2011-05-03 22:32:16 +00:00
Johnny Chen 0934268ee1 Use a more gentle way of shutting down the child process spawned during the test execution using pexpect.
Change some child.expect() to child.expect_exact() as they try to match the string, not a regular expression.

llvm-svn: 130797
2011-05-03 22:14:19 +00:00
Greg Clayton effe5c956b Added new OptionGroup classes for UInt64, UUID, File and Boolean values.
Removed the "image" command and moved it to "target modules". Added an alias
for "image" to "target modules". 

Added some new target commands to be able to add and load modules to a target:
(lldb) target modules add <path>
(lldb) target modules load [--file <path>] [--slide <offset>] [<sect-name> <sect-load-addr> ...]

So you can load individual sections without running a target:

(lldb) target modules load --file /usr/lib/libSystem.B.dylib __TEXT 0x7fccc80000 __DATA 0x1234000000

Or you can rigidly slide an entire shared library:

(lldb) target modules load --file /usr/lib/libSystem.B.dylib --slid 0x7fccc80000

This should improve bare board debugging when symbol files need to be slid around manually.

llvm-svn: 130796
2011-05-03 22:09:39 +00:00
Caroline Tice e67afe15b4 Pre-load the Python script interpreter with the following
convenience variables (from the ExecutionContext) each time
it is entered: lldb.debugger, lldb.target, lldb.process, 
lldb.thread, lldb.frame.

If a frame (or thread, process, etc) does not currently exist,
the variable contains the Python value 'None'.

llvm-svn: 130792
2011-05-03 21:21:50 +00:00
Caroline Tice 4a3533ba7f Remove type cast that was causing compiler warning.
llvm-svn: 130790
2011-05-03 20:58:11 +00:00
Caroline Tice 86a73f9007 Make the driver listen for asynchronous output, rather than
the IOChannel, so that it can be written out even while the
IOChannel is collecting user input.

llvm-svn: 130789
2011-05-03 20:53:11 +00:00
Johnny Chen c8170f95fb Modify test_image_search_paths(self) to check for the pattern "%s-[^-]*-[^-]*" % self.getArchitecture()
from the output of running 'image list -t 3' command which lists the triples of the image list.

llvm-svn: 130777
2011-05-03 18:53:19 +00:00
Johnny Chen d9d0b76f33 Rename TestStopHook.py to the more appropriate TestStopHookMechanism.py, and update the docstrings.
llvm-svn: 130773
2011-05-03 18:40:19 +00:00
Johnny Chen fd23782c26 Modified to exercise the 'target stop-hook add/disable/enable/delete/list' commands.
llvm-svn: 130771
2011-05-03 18:32:01 +00:00
Johnny Chen b2a27481c1 A more robust pexpect-based test case for testing against the firing of stop hooks.
Change one test sequence to detect the '** End Stop Hooks **' marker emitted by the
stop hooks mechanism and check for whether the 'expr ptr' stop-hook has been run.

Also, change the TestBase.tearDown() to wait for 2 seocnds before forcefully kill
the pexpect-spawned child lldb process.

llvm-svn: 130767
2011-05-03 17:38:06 +00:00
Johnny Chen 37286b2440 Add a test case to exercise the 'target stop-hook add' command without relying on pexpect
to spawn an lldb child command.  The test is not "correct" in that the '** Stop Hooks **'
message emitted by the Target implementation is invoked asynchronously and is using a separate:

    CommandReturnObject result;

command return object that what the driver passes to the normal command interpreter loop.
But it can help test our output serialization work.

I need to modify the test case later to maybe only test that "-o 'expr ptr'" option does indeed work.

llvm-svn: 130742
2011-05-03 00:19:01 +00:00
Johnny Chen 296515551f The 'target stop-hook add' command is missing the stop hook added message for one-liner.
llvm-svn: 130741
2011-05-03 00:06:12 +00:00
Johnny Chen b1372c0806 Add a one-liner option, for example, "-o 'expr ptr'", to the 'target stop-hook add' command.
llvm-svn: 130740
2011-05-02 23:47:55 +00:00
Caroline Tice 6eb74cd2e3 Fix the compiler in the project (accidentally checked in with wrong
compiler).

llvm-svn: 130738
2011-05-02 22:54:24 +00:00
Greg Clayton b501b99c6e Added a "--triple [<width>]" ("-t<width>" as a short option) option to the
image list command so we can see the full triple for each target module.

llvm-svn: 130728
2011-05-02 21:39:03 +00:00
Caroline Tice 969ed3d10f This patch captures and serializes all output being written by the
command line driver, including the lldb prompt being output by
editline, the asynchronous process output & error messages, and
asynchronous messages written by target stop-hooks.

As part of this it introduces a new Stream class,
StreamAsynchronousIO.  A StreamAsynchronousIO object is created with a
broadcaster, who will eventually broadcast the stream's data for a
listener to handle, and an event type indicating what type of event
the broadcaster will broadcast.  When the Write method is called on a
StreamAsynchronousIO object, the data is appended to an internal
string.  When the Flush method is called on a StreamAsynchronousIO
object, it broadcasts it's data string and clears the string.

Anything in lldb-core that needs to generate asynchronous output for
the end-user should use the StreamAsynchronousIO objects.

I have also added a new notification type for InputReaders, to let
them know that a asynchronous output has been written. This is to
allow the input readers to, for example, refresh their prompts and
lines, if desired.  I added the case statements to all the input
readers to catch this notification, but I haven't added any code for
handling them yet (except to the IOChannel input reader).

llvm-svn: 130721
2011-05-02 20:41:46 +00:00
Johnny Chen d71670c04a Add implementation of '==' and '!=' for SBFileSpec and SBModule. Modify a test case to take advantage of 'ths_module == that_module'.
llvm-svn: 130709
2011-05-02 19:05:52 +00:00
Jim Ingham 61be0903e5 Adding support for fetching the Dynamic Value for ObjC Objects.
llvm-svn: 130701
2011-05-02 18:13:59 +00:00
Johnny Chen 17bae4c5e6 Fix a typo in comment.
llvm-svn: 130698
2011-05-02 17:53:04 +00:00
Greg Clayton 2289fa4820 Added the ability to set the Platform path for a module through the SBModule
interface.

Added a quick way to set the platform though the SBDebugger interface. I will
actually an a SBPlatform support soon, but for now this will do.

ConnectionFileDescriptor can be passed a url formatted as: "fd://<fd>" where
<fd> is a file descriptor in the current process. This is handy if you have
services, deamons, or other tools that can spawn processes and give you a
file handle.

llvm-svn: 130565
2011-04-30 01:09:13 +00:00
Greg Clayton e5b3498eef Added the start of the CFI row production using the
emulate instruction classes.

llvm-svn: 130556
2011-04-29 22:50:31 +00:00
Johnny Chen f1c95f8bcb Update comments.
llvm-svn: 130533
2011-04-29 19:22:24 +00:00
Johnny Chen 31e4be06c4 Fix a bug introduced in my previous checkin, where the state was not properly
restored after parsing "SBTarget".  Indentation matters in Python. :-)

llvm-svn: 130532
2011-04-29 19:19:13 +00:00
Johnny Chen 0f023fa4af Add the Python rich comparison methods for SBBreakpoint, where GetID() returns
the breakpoint ID and provides the semantics needed for '==' and '!='.  And
modify LLDBIteratorTestCase.lldb_iter_2() to use '==' between two SBBreakpoint's.

llvm-svn: 130531
2011-04-29 19:03:02 +00:00
Johnny Chen 51cc833af7 Fix a typo.
llvm-svn: 130461
2011-04-28 23:53:16 +00:00
Johnny Chen 6cd4d1d85a Modified to take advantage of the iteration protocol for our lldb container objects.
llvm-svn: 130457
2011-04-28 23:34:58 +00:00
Johnny Chen e25799b99b Modified to take advantage of the iteration protocol for our lldb container objects.
llvm-svn: 130456
2011-04-28 23:26:17 +00:00
Johnny Chen e69c748328 Modify the test suite and lldbutil.py to utilize the Python iteration pattern now that
the lldb iteration protocol has been added to lldb.py module.

llvm-svn: 130452
2011-04-28 22:57:01 +00:00
Johnny Chen fbc0d27144 Move the iteration protocol of lldb objects to the auto-generated lldb Python module.
This is so that the objects which support the iteration protocol are immediately obvious
from looking at the lldb.py file.

SBTarget supports two types of iterations: module and breakpoint.  For an SBTarget instance,
you will need to issue either:

    for m in target.module_iter()

or

    for b in target.breakpoint_iter()

For other single iteration protocol objects, just use, for example:

    for thread in process:
        ID = thread.GetThreadID()
        for frame in thread:
            frame.Disassemble()
            ....

llvm-svn: 130442
2011-04-28 21:31:18 +00:00
Greg Clayton 68ebae61d1 Added the ability to specify dumping options (show types, show location,
depth control, pointer depth, and more) when dumping memory and viewing as
a type.

llvm-svn: 130436
2011-04-28 20:55:26 +00:00
Greg Clayton 84c39663a9 Added a new OptionValue subclass for lldb::Format: OptionValueFormat. Added
new OptionGroup subclasses for:
- output file for use with options: 
        long opts: --outfile <path> --append--output
        short opts: -o <path> -A
        
- format for use with options:
        long opts: --format <format>

- variable object display controls for depth, pointer depth, wether to show
  types, show summary, show location, flat output, use objc "po" style summary.
  
Modified ValueObjectMemory to be able to be created either with a TypeSP or
a ClangASTType.

Switched "memory read" over to use OptionGroup subclasses: one for the outfile
options, one for the command specific options, and one for the format.

llvm-svn: 130334
2011-04-27 22:04:39 +00:00
Johnny Chen b2e1a5c998 Add a utility function smart_iter() which has knowledge of the getsize and the getelem
method names of all the lldb container objects and returns an iterator object when
passed an eligible lldb container object.

Example:

    from lldb_util import smart_iter
    for thread in smart_iter(process):
        ID = thread.GetThreadID()
        if thread.GetStopReason() == lldb.eStopReasonBreakpoint:
            stopped_due_to_breakpoint = True
        for frame in smart_iter(thread):
            self.assertTrue(frame.GetThread().GetThreadID() == ID)
        ...

Add a test case for lldb.smart_iter().

llvm-svn: 130332
2011-04-27 21:44:09 +00:00
Johnny Chen f6c61a34bf Use new string formatting operations in assert messages to simplify things.
llvm-svn: 130325
2011-04-27 19:52:41 +00:00
Johnny Chen 3c7a72c5ad Add another test case for lldb_iter(), this time using SBTarget to get at its SBBreakpoint containees.
llvm-svn: 130323
2011-04-27 19:29:39 +00:00
Jim Ingham d5c06a68b5 Removing Greg's working directory & startup arguments from the shared lldb-tool scheme.
llvm-svn: 130319
2011-04-27 18:49:17 +00:00
Johnny Chen de90f1dd93 Change the rest of lldbutil.py's function names to all lower case formats to be consistent.
And modify the test cases accordingly.

llvm-svn: 130314
2011-04-27 17:43:07 +00:00
Johnny Chen c5f121e3c0 Add a test case for lldbutil.lldb_iter() which returns an iterator object
for lldb objects which can contain other lldb objects.  Examples are:
SBTarget contains SBModule, SBModule contains SBSymbols, SBProcess contains
SBThread, SBThread contains SBFrame, etc.

llvm-svn: 130258
2011-04-26 23:54:25 +00:00
Greg Clayton 79ea878bf9 Got the EmulateInstruction CFI code a lot closer to producing CFI data.
Switch the EmulateInstruction to use the standard RegisterInfo structure
that is defined in the lldb private types intead of passing the reg kind and
reg num everywhere. EmulateInstruction subclasses also need to provide
RegisterInfo structs given a reg kind and reg num. This eliminates the need
for the GetRegisterName() virtual function and allows more complete information
to be passed around in the read/write register callbacks. Subclasses should
always provide RegiterInfo structs with the generic register info filled in as
well as at least one kind of register number in the RegisterInfo.kinds[] array.

llvm-svn: 130256
2011-04-26 23:48:45 +00:00
Johnny Chen 0a8a54c117 Docstring.
llvm-svn: 130254
2011-04-26 23:10:51 +00:00
Johnny Chen 35ec67464f Docstring.
llvm-svn: 130253
2011-04-26 23:10:15 +00:00
Johnny Chen 6424b7d272 Update comment.
llvm-svn: 130252
2011-04-26 23:07:40 +00:00
Johnny Chen 4fdcebda1d Docstring changees.
llvm-svn: 130251
2011-04-26 22:53:38 +00:00