aboutsummaryrefslogtreecommitdiff
path: root/lldb/scripts/Python
AgeCommit message (Collapse)AuthorFilesLines
2011-07-26Fix indentation and add a docstring for the ctor.Johnny Chen1-4/+6
llvm-svn: 136187
2011-07-26adding required utility function to SWIG interfaceEnrico Granata1-0/+43
llvm-svn: 136147
2011-07-26We can do better with the SBValue.linked_list_iter() API by supplying a defaultJohnny Chen1-12/+16
end of list test function as __eol_test__. The simple example can be reduced to: for t in task_head.linked_list_iter('next'): print t Modify the test program to exercise the API for both cases: supplying or not supplying an end of list test function. llvm-svn: 136144
2011-07-26The test function to determine whether we have reached the end of the list wasJohnny Chen1-14/+7
too complex in the test case. We can just simply test that the SBValue object is a valid object and it does not correspond to a null pointer in order to say that EOL has not been reached. Modify the test case and the lldb.py docstring to have a more compact test function. llvm-svn: 136123
2011-07-26lldb.swig (the SWIG input file) has become too large. Modularize a bit by ↵Johnny Chen2-0/+637
introducing two files to be included from lldb.swig: python-typemaps.swig and python-wrapper.swig. llvm-svn: 136117
2011-07-25Rename the parameter for the end-of-list test function from end_of_list to ↵Johnny Chen1-2/+2
end_of_list_test. llvm-svn: 136016
2011-07-25Add cross references between the docstrings for regular SBValue iteration:Johnny Chen2-6/+16
for child in value: # do something with the child value and SBValue.linked_list_iter(): for task in task_head.linked_list_iter('next', eol_test): # visit each item in the linked list llvm-svn: 136015
2011-07-25Provide an add-on API to SBValue class by post-processing to provide a wayJohnny Chen1-0/+61
to iterate through an SBValue instance by treating it as the head of a linked list. API program must provide two args to the linked_list_iter() method: the first being the child member name which points to the next item on the list and the second being a Python function which an SBValue (for the next item) and returns True if end of list is reached, otherwise it returns False. For example, suppose we have the following sample program. #include <stdio.h> class Task { public: int id; Task *next; Task(int i, Task *n): id(i), next(n) {} }; int main (int argc, char const *argv[]) { Task *task_head = new Task(-1, NULL); Task *task1 = new Task(1, NULL); Task *task2 = new Task(2, NULL); Task *task3 = new Task(3, NULL); // Orphaned. Task *task4 = new Task(4, NULL); Task *task5 = new Task(5, NULL); task_head->next = task1; task1->next = task2; task2->next = task4; task4->next = task5; int total = 0; // Break at this line Task *t = task_head; while (t != NULL) { if (t->id >= 0) ++total; t = t->next; } printf("We have a total number of %d tasks\n", total); return 0; } The test program produces the following output while exercising the linked_list_iter() SBVAlue API: task_head: TypeName -> Task * ByteSize -> 8 NumChildren -> 2 Value -> 0x0000000106400380 ValueType -> local_variable Summary -> None IsPointerType -> True Location -> 0x00007fff65f06e60 (Task *) next = 0x0000000106400390 (int) id = 1 (Task *) next = 0x00000001064003a0 (Task *) next = 0x00000001064003a0 (int) id = 2 (Task *) next = 0x00000001064003c0 (Task *) next = 0x00000001064003c0 (int) id = 4 (Task *) next = 0x00000001064003d0 (Task *) next = 0x00000001064003d0 (int) id = 5 (Task *) next = 0x0000000000000000 llvm-svn: 135938
2011-07-22Make the SBAddress class easier to use when using the publicGreg Clayton2-3/+9
API. SBTarget changes include changing: bool SBTarget::ResolveLoadAddress (lldb::addr_t vm_addr, lldb::SBAddress& addr); to be: lldb::SBAddress SBTarget::ResolveLoadAddress (lldb::addr_t vm_addr); SBAddress can how contruct itself using a load address and a target which can be used to resolve the address: SBAddress (lldb::addr_t load_addr, lldb::SBTarget &target); This will actually just call the new SetLoadAddress accessor: void SetLoadAddress (lldb::addr_t load_addr, lldb::SBTarget &target); This function will always succeed in making a SBAddress object that can be used in API calls (even if "target" isn't valid). If "target" is valid and there are sections currently loaded, then it will resolve the address to a section offset address if it can. Else an address with a NULL section and an offset that is the "load_addr" that was passed in. We do this because a load address might be from the heap or stack. llvm-svn: 135770
2011-07-21Change docstring wording: from 'method' to 'function'.Johnny Chen1-1/+1
llvm-svn: 135648
2011-07-21Add docstring for SBInstructionList class.Johnny Chen1-0/+14
llvm-svn: 135647
2011-07-21Add docstring for SBCommandReturnObject class.Johnny Chen1-0/+7
llvm-svn: 135642
2011-07-20Add docstring for SBCommandInterpreter class.Johnny Chen1-0/+44
llvm-svn: 135631
2011-07-20Add docstring for SBBroadcaster class.Johnny Chen1-0/+11
llvm-svn: 135630
2011-07-20Add some docstrings for SBFileSpec class.Johnny Chen1-0/+21
llvm-svn: 135553
2011-07-20Add some docstrings for SBError class.Johnny Chen1-0/+47
llvm-svn: 135547
2011-07-19Add some docstrings for SBSourceManager class.Johnny Chen1-0/+26
llvm-svn: 135539
2011-07-19Add some docstrings for SBStream class.Johnny Chen1-8/+47
llvm-svn: 135536
2011-07-19Move the rest of the SB headers to interface files.Johnny Chen14-0/+815
They are not docstring'ed yet. llvm-svn: 135531
2011-07-19Add SWIG interface files for SBSymbol, SBSymbolContext, and SBSymbolContextList.Johnny Chen4-1/+211
llvm-svn: 135459
2011-07-18Add SWIG Python interface files for SBLineEntry, SBListener, and SBModule.Johnny Chen4-2/+313
llvm-svn: 135441
2011-07-18Missed the interface file for SBFunction in the previous checkin.Johnny Chen1-0/+81
llvm-svn: 135436
2011-07-18Add SWIG Python interface files for SBDebugger, SBCompileUnit, and SBEvent.Johnny Chen3-0/+530
llvm-svn: 135432
2011-07-18Add SWIG Python interface files for SBAddress, SBBlock, SBBreakpoint, and ↵Johnny Chen4-0/+424
SBBreakpointLocation. llvm-svn: 135430
2011-07-18Add SWIG Python interface files for SBProcess, SBThread, and SBFrame.Johnny Chen6-9/+588
llvm-svn: 135419
2011-07-18Fix header documentations.Johnny Chen2-2/+2
llvm-svn: 135417
2011-07-18Add two new interface files SBValue.i and SBValueList.i, instead of directly ↵Johnny Chen2-0/+364
swigging the header files. llvm-svn: 135416
2011-07-18Cleaned up the interface file for SBTarget.Johnny Chen1-50/+0
llvm-svn: 135405
2011-07-16Have SWIG generate autodoc strings with parameter types for all SB API ↵Johnny Chen1-1/+0
objects by default. llvm-svn: 135357
2011-07-16Create an interface file for SBTarget named SBTarget.i which relieves SBTarget.hJohnny Chen2-15/+493
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-15Add some more docstrings for SBCompileUnit and SBBreakpoint, plus ↵Johnny Chen1-3/+4
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-14Add some more docstrings (includng example usages) to SBTarget.h.Johnny Chen1-0/+3
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-08Missed the char_to_str_xform on the docstrings for the module level function ↵Johnny Chen1-1/+3
definitions. llvm-svn: 134775
2011-07-06Add post-processing step to transform the docstring from 'char', i.e., 'char ↵Johnny Chen1-0/+24
*', to 'str', i.e., Python string. llvm-svn: 134543
2011-07-03Add a CLEANUP_DOCSTRING state to our FSM to do cleanup of the Python docstringsJohnny Chen1-16/+41
generated from the swig docstring features instead of blindly applying the cleanup action for all input lines. llvm-svn: 134368
2011-07-03Add swig docstrings for SBFrame.h.Johnny Chen1-2/+3
Add post-processing step to remove the trailing blank lines from the docstrings of lldb.py. llvm-svn: 134360
2011-07-02Refine the post-processing phase of lldb.py to remove some more ↵Johnny Chen1-1/+11
doxygen/c++-comment residues. llvm-svn: 134326
2011-07-01Add some documentation blocks to SBTarget.h and use swig docstring feature toJohnny Chen1-0/+16
take advantage of them. Update modify-python-lldb.py to remove some 'residues' resulting from swigification. llvm-svn: 134269
2011-06-14Generalise pattern for matching IsValid signaturePeter Collingbourne1-1/+1
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-09Add rich comparison methods for the SBAddress object.Johnny Chen1-1/+2
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-01Make it clear that the Python script modify-python-lldb.py is responsible ↵Johnny Chen1-0/+8
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-01Fix comment.Johnny Chen1-1/+1
llvm-svn: 132412
2011-06-01Fix remaining Python issues leftover from my previous patch.Charles Davis1-3/+7
- 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-05-27Use the with statement to simplify the build script.Johnny Chen1-42/+20
llvm-svn: 132221
2011-05-24Added comment.Johnny Chen1-0/+1
llvm-svn: 132019
2011-05-24Comment change.Johnny Chen1-1/+1
llvm-svn: 132018
2011-05-24Fix a potential bug resulting from the wrong assumption that SWIG puts out ↵Johnny Chen1-8/+8
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-24Update comment.Johnny Chen1-1/+2
llvm-svn: 132002
2011-05-17Add truth value testing to those lldb Python objects with the IsValid() ↵Johnny Chen1-5/+33
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-16Add implementation of built-in function len() for those lldb containers withJohnny Chen1-1/+7
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