Commit Graph

911 Commits

Author SHA1 Message Date
Johnny Chen
0f5196844d Rearrange the %include SWIG directives into two groups. One is the pure .h headers and the other is the .i interface files.
The objective is to move the .h header into .i interface file eventually.

llvm-svn: 135526
2011-07-19 21:49:34 +00:00
Johnny Chen
349f076330 Add SWIG interface files for SBSymbol, SBSymbolContext, and SBSymbolContextList.
llvm-svn: 135459
2011-07-19 01:07:06 +00:00
Johnny Chen
f74cb50cda Add SWIG Python interface files for SBLineEntry, SBListener, and SBModule.
llvm-svn: 135441
2011-07-18 23:11:07 +00:00
Johnny Chen
d84a9a1249 Missed the interface file for SBFunction in the previous checkin.
llvm-svn: 135436
2011-07-18 22:15:37 +00:00
Johnny Chen
0eca544b45 Add SWIG Python interface files for SBDebugger, SBCompileUnit, and SBEvent.
llvm-svn: 135432
2011-07-18 22:11:53 +00:00
Johnny Chen
5de6a790f2 Add SWIG Python interface files for SBAddress, SBBlock, SBBreakpoint, and SBBreakpointLocation.
llvm-svn: 135430
2011-07-18 21:30:21 +00:00
Johnny Chen
357033b337 Add SWIG Python interface files for SBProcess, SBThread, and SBFrame.
llvm-svn: 135419
2011-07-18 20:13:38 +00:00
Johnny Chen
9a5b16b87c Fix header documentations.
llvm-svn: 135417
2011-07-18 19:15:22 +00:00
Johnny Chen
67ae7bdb54 Add two new interface files SBValue.i and SBValueList.i, instead of directly swigging the header files.
llvm-svn: 135416
2011-07-18 19:08:30 +00:00
Johnny Chen
482ad087ef Cleaned up the interface file for SBTarget.
llvm-svn: 135405
2011-07-18 17:53:20 +00:00
Enrico Granata
03f16a09bf Runtime errors in Python scripts were not being shown; this fix makes them print out to ease correcting errors
llvm-svn: 135395
2011-07-18 16:24:10 +00:00
Johnny Chen
9ffc9f7a18 Have SWIG generate autodoc strings with parameter types for all SB API objects by default.
llvm-svn: 135357
2011-07-16 21:27:36 +00:00
Johnny Chen
dc7d3c121b Create an interface file for SBTarget named SBTarget.i which relieves SBTarget.h
of the duty of having SWIG docstring features and multiline string literals
embedded within.

lldb.swig now %include .../SBTarget.i, instead of .../SBTarget.h.  Will create
other interface files and transition them over.

Also update modify-python-lldb.py to better handle the trailing blank line right
before the ending '"""' Python docstring delimiter.

llvm-svn: 135355
2011-07-16 21:15:39 +00:00
Johnny Chen
135f63fb30 Add some more docstrings for SBCompileUnit and SBBreakpoint, plus incorporate the doxgen doc block of
SBValue::GetChildAtIndex(uint32_t idx, 
                         lldb::DynamicValueType use_dynamic,
                         bool can_create_synthetic);

into the SBValue docstrings.

llvm-svn: 135295
2011-07-15 20:46:19 +00:00
Enrico Granata
f2bbf717f7 Python summary strings:
- you can use a Python script to write a summary string for data-types, in one of
   three ways:
    -P option and typing the script a line at a time
    -s option and passing a one-line Python script
    -F option and passing the name of a Python function
   these options all work for the "type summary add" command
   your Python code (if provided through -P or -s) is wrapped in a function
   that accepts two parameters: valobj (a ValueObject) and dict (an LLDB
   internal dictionary object). if you use -F and give a function name,
   you're expected to define the function on your own and with the right
   prototype. your function, however defined, must return a Python string
 - test case for the Python summary feature
 - a few quirks:
  Python summaries cannot have names, and cannot use regex as type names
  both issues will be fixed ASAP
major redesign of type summary code:
 - type summary working with strings and type summary working with Python code
   are two classes, with a common base class SummaryFormat
 - SummaryFormat classes now are able to actively format objects rather than
   just aggregating data
 - cleaner code to print descriptions for summaries
the public API now exports a method to easily navigate a ValueObject hierarchy
New InputReaderEZ and PriorityPointerPair classes
Several minor fixes and improvements

llvm-svn: 135238
2011-07-15 02:26:42 +00:00
Johnny Chen
4036b587df Add summary info for SBBreakpoint to the lldb module level docstring.
llvm-svn: 135194
2011-07-14 21:32:11 +00:00
Johnny Chen
993f2b6ccd Minor wording change.
llvm-svn: 135190
2011-07-14 21:23:24 +00:00
Johnny Chen
fa181f4fdb Add some more docstrings (includng example usages) to SBTarget.h.
Add logic to modify-python-lldb to correct swig's transformation of 'char **argv' and 'char **envp'
to 'char argv' and 'char envp' by morphing them into the 'list argv' and 'list envp' (as a list of
Python strings).

llvm-svn: 135114
2011-07-14 00:17:49 +00:00
Johnny Chen
02a07299b7 Missed the char_to_str_xform on the docstrings for the module level function definitions.
llvm-svn: 134775
2011-07-08 23:57:20 +00:00
Johnny Chen
3a709ac7bf o TestEvents.py:
Add a usage example of SBEvent APIs.

o SBEvent.h and SBListener.h:

Add method docstrings for SBEvent.h and SBListener.h, and example usage of SBEvent into
the class docstring of SBEvent.

o lldb.swig:

Add typemap for SBEvent::SBEvent (uint32_t event, const char *cstr, uint32_t cstr_len)
so that we can use, in Python, obj2 = lldb.SBEvent(0, "abc") to create an SBEvent.

llvm-svn: 134766
2011-07-08 23:02:33 +00:00
Johnny Chen
102ac765f0 Add post-processing step to transform the docstring from 'char', i.e., 'char *', to 'str', i.e., Python string.
llvm-svn: 134543
2011-07-06 21:55:45 +00:00
Johnny Chen
c201d8a999 Add a CLEANUP_DOCSTRING state to our FSM to do cleanup of the Python docstrings
generated from the swig docstring features instead of blindly applying the
cleanup action for all input lines.

llvm-svn: 134368
2011-07-03 19:55:50 +00:00
Johnny Chen
b8f7603526 Add swig docstrings for SBFrame.h.
Add post-processing step to remove the trailing blank lines from the docstrings of lldb.py.

llvm-svn: 134360
2011-07-03 01:43:29 +00:00
Johnny Chen
ed48137734 Refine the post-processing phase of lldb.py to remove some more doxygen/c++-comment residues.
llvm-svn: 134326
2011-07-02 20:01:09 +00:00
Johnny Chen
b9a2c32219 Add some documentation blocks to SBTarget.h and use swig docstring feature to
take advantage of them.  Update modify-python-lldb.py to remove some 'residues'
resulting from swigification.

llvm-svn: 134269
2011-07-01 22:14:07 +00:00
Johnny Chen
61abb2aea7 Add docstrings for some API classes and auto-generates docstrings for the methods of them.
A few of the auto-generated method docstrings don't look right, and may need to be fixed
by either overwriting the auto-gened docstrings or some post-processing steps.

llvm-svn: 134246
2011-07-01 18:39:47 +00:00
Johnny Chen
ee481783cb Add module docstring to the auto-generated lldb.py file.
llvm-svn: 134192
2011-06-30 21:29:50 +00:00
Peter Collingbourne
059640b521 Generalise pattern for matching IsValid signature
Previously the IsValid pattern matched only function signatures of
the form:
    def IsValid(*args): ...

However under SWIG 1.3.40 on Linux the signature reads:
    def IsValid(self): ...

The new pattern matches both signature types by matching only up to
the left paren.

llvm-svn: 132968
2011-06-14 03:55:41 +00:00
Johnny Chen
e2b5cfd826 Add rich comparison methods for the SBAddress object.
If two SBAddress's have the same module and file address, they are considered equal.

Add a test snippet 'sa1 == sa2' to exercise the rich comparison methods for SBAddress.

llvm-svn: 132807
2011-06-09 22:04:56 +00:00
Greg Clayton
8672996e4d Update the handle many of the packets that our current LLDB debugserver
handles. Also fixed a case where the packet wouldn't be dumped if it returned
the unimplemented packet.

llvm-svn: 132498
2011-06-02 22:21:38 +00:00
Johnny Chen
755faf7744 Make it clear that the Python script modify-python-lldb.py is responsible for post-processing
the SWIG-generated lldb.py module by adding comments in the post-processed file in order to
facilitate reading of the code.

llvm-svn: 132417
2011-06-01 19:21:08 +00:00
Johnny Chen
2ced507a1e Fix comment.
llvm-svn: 132412
2011-06-01 18:40:11 +00:00
Charles Davis
4ce288e3e4 Fix remaining Python issues leftover from my previous patch.
- The Swig post-processing scripts are now run.
- edit-swig-python-wrapper-file.py has been modified so it can be run
from the Makefile.
- The issue that prompted me to pass -classic to swig is fixed by this,
so -classic isn't passed anymore.

Python shouldn't complain anymore about a missing method 'FindDebuggerByID'
on the SBDebugger object whenever lldb is run.

llvm-svn: 132383
2011-06-01 02:33:12 +00:00
Johnny Chen
bf9cf5ec1e Use the with statement to simplify the build script.
llvm-svn: 132221
2011-05-27 21:58:22 +00:00
Johnny Chen
624ddf2f20 Added comment.
llvm-svn: 132019
2011-05-24 22:57:42 +00:00
Johnny Chen
2f1ee9a09c Comment change.
llvm-svn: 132018
2011-05-24 22:53:03 +00:00
Johnny Chen
93e7b3a8bd Fix a potential bug resulting from the wrong assumption that SWIG puts out the __init__
method definition before other method definitions.  Instead, do without it and process
the class with IsValid() method definition in all possible states.

llvm-svn: 132016
2011-05-24 22:29:49 +00:00
Johnny Chen
685b2b080f Update comment.
llvm-svn: 132002
2011-05-24 21:05:16 +00:00
Sean Callanan
79763a42ab This commit integrates support for the LLVM MCJIT
into the mainline LLDB codebase.  MCJIT introduces
API improvements and better architectural support.

This commit adds a new subsystem, the
ProcessDataAllocator, which is responsible for
performing static data allocations on behalf of the
IR transformer.  MCJIT currently does not support
the relocations required to store the constant pool
in the same allocation as the function body, so we
allocate a heap region separately and redirect
static data references from the expression to that
heap region in a new IR modification pass.

This patch also fixes bugs in the IR
transformations that were exposed by the transition
to the MCJIT.  Finally, the patch also pulls in a
more recent revision of LLVM so that the MCJIT is
available for use.

llvm-svn: 131923
2011-05-23 21:40:23 +00:00
Greg Clayton
5fe15d2d52 Fixed an issue in GDBRemoteCommunicationClient where we weren't listening to
the "payload_length" argument for the "payload" packet data. This meant we 
could end up sending random extra data with a packet depending on how the 
packet was constructed.

Fixed GDBRemoteRegisterContext to properly save and restore all registers. 
Previous fixes had been added to work around the "payload_length" issues fixed
above and aren't needed anymore.

Fix logging in GDBRemoteCommunication to make sure we log the correct packet
data being sent by using the packet length when dumping the packet contents.

Added register definitions for 'arm-lldb' in the "disasm-gdb-remote.pl" script
so if you have a register dump from the GDB remote that doesn't include the
qRegisterInfo packets, you can manually tell the script which registers are
which.

llvm-svn: 131715
2011-05-20 03:15:54 +00:00
Greg Clayton
e51dc6f32a Added a perl script to disassemble, into human readable form, the GDB remote
packet output from "log enable gdb-remote packets". This should help people
track down and see what is going wrong more easily when you have log output
that includes GDB remote packets.

llvm-svn: 131713
2011-05-20 02:00:47 +00:00
Johnny Chen
112f5696fb Add truth value testing to those lldb Python objects with the IsValid() method definitions.
object.__nonzero__(self) is called to implement truth value testing and the built-in operation bool(),
via a simple delegation to self.IsValid().

Change tests under python_api/lldbutil to utilize this mechanism.

llvm-svn: 131494
2011-05-17 22:14:39 +00:00
Johnny Chen
fac7b3aae6 Add implementation of built-in function len() for those lldb containers with
unambiguous iteration support.  So that we could, for example:

    ...

    REGs = lldbutil.get_GPRs(frame)
    print "Number of general purpose registers: %d" % len(REGs)
    for reg in REGs:
        print "%s => %s" %(reg.GetName(), reg.GetValue())

    ...

llvm-svn: 131418
2011-05-16 20:31:18 +00:00
Sean Callanan
d12cf8bbc9 Updated to use the latest LLVM/Clang, to pick up JIT
changes.

llvm-svn: 131391
2011-05-15 22:34:38 +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
Johnny Chen
17bae4c5e6 Fix a typo in comment.
llvm-svn: 130698
2011-05-02 17:53:04 +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