summaryrefslogtreecommitdiffstats
path: root/lldb/scripts/Python/modify-python-lldb.py
Commit message (Collapse)AuthorAgeFilesLines
* *** This commit represents a complete reformatting of the LLDB source codeKate Stone2016-09-061-52/+66
| | | | | | | | | | | | | | | | | | | | | | | *** to conform to clang-format’s LLVM style. This kind of mass change has *** two obvious implications: Firstly, merging this particular commit into a downstream fork may be a huge effort. Alternatively, it may be worth merging all changes up to this commit, performing the same reformatting operation locally, and then discarding the merge for this particular commit. The commands used to accomplish this reformatting were as follows (with current working directory as the root of the repository): find . \( -iname "*.c" -or -iname "*.cpp" -or -iname "*.h" -or -iname "*.mm" \) -exec clang-format -i {} + find . -iname "*.py" -exec autopep8 --in-place --aggressive --aggressive {} + ; The version of clang-format used was 3.9.0, and autopep8 was 1.2.4. Secondly, “blame” style tools will generally point to this commit instead of a meaningful prior commit. There are alternatives available that will attempt to look through this change and find the appropriate prior commit. YMMV. llvm-svn: 280751
* Insert the SWIG version into LLDB's __init__.pyZachary Turner2015-11-161-5/+30
| | | | | | | The goal here is to allow us to add skip / xfail decorators based on SWIG version. llvm-svn: 253262
* Remove a debug print statement.Zachary Turner2015-11-071-1/+0
| | | | llvm-svn: 252384
* Python 3 - Use __bool__() instead of __nonzero__() for truthiness.Zachary Turner2015-11-071-1/+16
| | | | | | | | | | | | | | | | | | | | | | | Python has a complicated mechanism of checking an objects truthity. This involves a number of steps, which end with calling two private methods on an object (if they are implemented). In Python 2 these two methods are `__nonzero__` and `__len__`, and in Python 3 they are `__bool__` and `__len__`. Because we *also* define a __len__ method for certain iterable types, this was triggering a situation in Python 3 where `__nonzero__` wasn't defined, so it was calling `__len__`, which was returning 0 (for example an SBDebugger with no targets), and as a result the truthosity was determined to be False. We fix this by correctly using ` __bool__` for Python 3, and leave the behavior under Python 2 unchanged. Note that this fix is only implemented in the SWIG generation python script, and not the SWIG generation shell script. Someone more familiar than me with shell scripts will need to fix them to support this for Python 3 if desired. llvm-svn: 252382
* [swig] Start of pylint on python build scripts.Bruce Mitchener2015-11-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | Summary: This does a broad first pass on cleaning up a lot of the noise when using pylint on these scripts. It mostly addresses issues of: * Mixed tabs and spaces. * Trailing whitespace. * Semicolons where they aren't needed. * Incorrect whitespace around () and []. * Superfluous parentheses. There will be subsequent patches with further changes that build upon these. Reviewers: zturner, domipheus Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D14375 llvm-svn: 252244
* Update swig generation scripts to support Python 3.Zachary Turner2015-10-061-3/+7
| | | | llvm-svn: 249467
* Make sure that the lldb globals:Greg Clayton2012-12-101-2/+8
| | | | | | | | | | | lldb.target lldb.process lldb.thread lldb.frame are initialized to at least contain empty lldb classes in case some python gets imported that uses them. llvm-svn: 169750
* Makefile patches from Charles Davis and Daniel Malea (+ one or two tweaks).Filipe Cabecinhas2012-11-011-1/+1
| | | | llvm-svn: 167242
* Export the APIs submitted by Dawn to the Python bindings. Add a simple test ↵Johnny Chen2012-03-161-1/+5
| | | | | | case for the SBModule.compile_unit_iter() API. llvm-svn: 152952
* Add a missing ')' in the comment.Johnny Chen2011-11-081-1/+1
| | | | llvm-svn: 144145
* SBValue::Watch() and SBValue::WatchPointee() are now the official API for ↵Johnny Chen2011-10-141-3/+3
| | | | | | | | | | | | | | | | | | creating a watchpoint for either the variable encapsulated by SBValue (Watch) or the pointee encapsulated by SBValue (WatchPointee). Removed SBFrame::WatchValue() and SBFrame::WatchLocation() API as a result of that. Modified the watchpoint related test suite to reflect the change. Plus replacing WatchpointLocation with Watchpoint throughout the code base. There are still cleanups to be dome. This patch passes the whole test suite. Check it in so that we aggressively catch regressions. llvm-svn: 141925
* Cleaned up the SBWatchpoint public API.Greg Clayton2011-10-131-1/+1
| | | | llvm-svn: 141876
* Add comment markers for in_range(symbol, section).Johnny Chen2011-10-031-0/+3
| | | | llvm-svn: 141033
* Add docstring to in_range() function residing in the lldb module.Johnny Chen2011-09-301-0/+1
| | | | llvm-svn: 140833
* Migrate the in_range(symbol, section) and symbol_iter(module, section) ↵Johnny Chen2011-09-301-5/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | utility functions from lldbutil.py to the lldb.py proper. The in_range() function becomes a function in the lldb module. And the symbol_iter() function becomes a method within the SBModule called symbol_in_section_iter(). Example: # Iterates the text section and prints each symbols within each sub-section. for subsec in text_sec: print INDENT + repr(subsec) for sym in exe_module.symbol_in_section_iter(subsec): print INDENT2 + repr(sym) print INDENT2 + 'symbol type: %s' % symbol_type_to_str(sym.GetType()) might produce this following output: [0x0000000100001780-0x0000000100001d5c) a.out.__TEXT.__text id = {0x00000004}, name = 'mask_access(MaskAction, unsigned int)', range = [0x00000001000017c0-0x0000000100001870) symbol type: code id = {0x00000008}, name = 'thread_func(void*)', range = [0x0000000100001870-0x00000001000019b0) symbol type: code id = {0x0000000c}, name = 'main', range = [0x00000001000019b0-0x0000000100001d5c) symbol type: code id = {0x00000023}, name = 'start', address = 0x0000000100001780 symbol type: code [0x0000000100001d5c-0x0000000100001da4) a.out.__TEXT.__stubs id = {0x00000024}, name = '__stack_chk_fail', range = [0x0000000100001d5c-0x0000000100001d62) symbol type: trampoline id = {0x00000028}, name = 'exit', range = [0x0000000100001d62-0x0000000100001d68) symbol type: trampoline id = {0x00000029}, name = 'fflush', range = [0x0000000100001d68-0x0000000100001d6e) symbol type: trampoline id = {0x0000002a}, name = 'fgets', range = [0x0000000100001d6e-0x0000000100001d74) symbol type: trampoline id = {0x0000002b}, name = 'printf', range = [0x0000000100001d74-0x0000000100001d7a) symbol type: trampoline id = {0x0000002c}, name = 'pthread_create', range = [0x0000000100001d7a-0x0000000100001d80) symbol type: trampoline id = {0x0000002d}, name = 'pthread_join', range = [0x0000000100001d80-0x0000000100001d86) symbol type: trampoline id = {0x0000002e}, name = 'pthread_mutex_lock', range = [0x0000000100001d86-0x0000000100001d8c) symbol type: trampoline id = {0x0000002f}, name = 'pthread_mutex_unlock', range = [0x0000000100001d8c-0x0000000100001d92) symbol type: trampoline id = {0x00000030}, name = 'rand', range = [0x0000000100001d92-0x0000000100001d98) symbol type: trampoline id = {0x00000031}, name = 'strtoul', range = [0x0000000100001d98-0x0000000100001d9e) symbol type: trampoline id = {0x00000032}, name = 'usleep', range = [0x0000000100001d9e-0x0000000100001da4) symbol type: trampoline [0x0000000100001da4-0x0000000100001e2c) a.out.__TEXT.__stub_helper [0x0000000100001e2c-0x0000000100001f10) a.out.__TEXT.__cstring [0x0000000100001f10-0x0000000100001f68) a.out.__TEXT.__unwind_info [0x0000000100001f68-0x0000000100001ff8) a.out.__TEXT.__eh_frame llvm-svn: 140830
* Add SBTarget::GetLastCreatedWatchpointLocation() API and export to the ↵Johnny Chen2011-09-271-5/+6
| | | | | | | | | | | Python interface. Also add rich comparison methods (__eq__ and __ne__) for SBWatchpointLocation. Modify TestWatchpointLocationIter.py to exercise the new APIs. Add fuzz testings for the recently added SBTarget APIs related to watchpoint manipulations. llvm-svn: 140633
* Export the watchpoint related API (SBWatchpointLocation class and added ↵Johnny Chen2011-09-271-2/+5
| | | | | | | | | | | | | | SBTarget methods) to the Python interface. Implement yet another (threre're 3 now) iterator protocol for SBTarget: watchpoint_location_iter(), to iterate on the available watchpoint locations. And add a print representation for SBWatchpointLocation. Exercise some of these Python API with TestWatchpointLocationIter.py. llvm-svn: 140595
* SBSection supports iteration through its subsections, represented as ↵Johnny Chen2011-09-241-1/+9
| | | | | | | | | SBSection as well. SBModule supports an additional SBSection iteration, besides the original SBSymbol iteration. Add docstrings and implement the two SBSection iteration protocols. llvm-svn: 140449
* Add logic to SBValue.linked_list_iter() to detect infinite loop and to bail ↵Johnny Chen2011-08-111-1/+5
| | | | | | | | | | | | out early. Add code to test case to create an evil linked list with: task_evil -> task_2 -> task_3 -> task_evil ... and to check that the linked list iterator only iterates 3 times. llvm-svn: 137291
* Change the SBValue.linked_list_iter() to treat the value object as a ↵Johnny Chen2011-08-111-2/+4
| | | | | | | | | | | | | homogeneous linked list data structure where an empty linked list is represented as a value object with a NULL value, instead of a special value object which 'points' to NULL. Also modifies the test case to comply. rdar://problem/9933692 llvm-svn: 137289
* o modify-python-lldb.py:Johnny Chen2011-08-051-2/+3
| | | | | | | | | | | | | | | Add the rich comparison methods (__eq__, __ne__) to SBType, too. o lldbtest.py: Add debug utility method TestBase.DebugSBType(). o test/python_api/type: Add tests for exercising SBType/SBTypeList API, including the SBTarget.FindTypes(type_name) API which returns a SBTypeList matching the type_name. llvm-svn: 136975
* The recently introduced SBTypeList is also iterable.Johnny Chen2011-08-051-2/+3
| | | | | | | This patch takes some time because the old Python constructor pattern was not a valid one, and breaks with SBTypeList's __init__ signature. Oops. llvm-svn: 136958
* The SBValue.linked_list_iter() API failed for an empty list.Johnny Chen2011-07-271-3/+1
| | | | | | Fix the bug and add a test case. llvm-svn: 136265
* We can do better with the SBValue.linked_list_iter() API by supplying a defaultJohnny Chen2011-07-261-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
* The test function to determine whether we have reached the end of the list wasJohnny Chen2011-07-261-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
* Rename the parameter for the end-of-list test function from end_of_list to ↵Johnny Chen2011-07-251-2/+2
| | | | | | end_of_list_test. llvm-svn: 136016
* Add cross references between the docstrings for regular SBValue iteration:Johnny Chen2011-07-251-5/+11
| | | | | | | | | | | | 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
* Provide an add-on API to SBValue class by post-processing to provide a wayJohnny Chen2011-07-251-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
* Create an interface file for SBTarget named SBTarget.i which relieves SBTarget.hJohnny Chen2011-07-161-15/+44
| | | | | | | | | | | | | 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
* Add some more docstrings for SBCompileUnit and SBBreakpoint, plus ↵Johnny Chen2011-07-151-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
* Add some more docstrings (includng example usages) to SBTarget.h.Johnny Chen2011-07-141-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
* Missed the char_to_str_xform on the docstrings for the module level function ↵Johnny Chen2011-07-081-1/+3
| | | | | | definitions. llvm-svn: 134775
* Add post-processing step to transform the docstring from 'char', i.e., 'char ↵Johnny Chen2011-07-061-0/+24
| | | | | | *', to 'str', i.e., Python string. llvm-svn: 134543
* Add a CLEANUP_DOCSTRING state to our FSM to do cleanup of the Python docstringsJohnny Chen2011-07-031-16/+41
| | | | | | | generated from the swig docstring features instead of blindly applying the cleanup action for all input lines. llvm-svn: 134368
* Add swig docstrings for SBFrame.h.Johnny Chen2011-07-031-2/+3
| | | | | | Add post-processing step to remove the trailing blank lines from the docstrings of lldb.py. llvm-svn: 134360
* Refine the post-processing phase of lldb.py to remove some more ↵Johnny Chen2011-07-021-1/+11
| | | | | | doxygen/c++-comment residues. llvm-svn: 134326
* Add some documentation blocks to SBTarget.h and use swig docstring feature toJohnny Chen2011-07-011-0/+16
| | | | | | | take advantage of them. Update modify-python-lldb.py to remove some 'residues' resulting from swigification. llvm-svn: 134269
* Generalise pattern for matching IsValid signaturePeter Collingbourne2011-06-141-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
* Add rich comparison methods for the SBAddress object.Johnny Chen2011-06-091-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
* Make it clear that the Python script modify-python-lldb.py is responsible ↵Johnny Chen2011-06-011-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
* Fix comment.Johnny Chen2011-06-011-1/+1
| | | | llvm-svn: 132412
* Added comment.Johnny Chen2011-05-241-0/+1
| | | | llvm-svn: 132019
* Comment change.Johnny Chen2011-05-241-1/+1
| | | | llvm-svn: 132018
* Fix a potential bug resulting from the wrong assumption that SWIG puts out ↵Johnny Chen2011-05-241-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
* Update comment.Johnny Chen2011-05-241-1/+2
| | | | llvm-svn: 132002
* Add truth value testing to those lldb Python objects with the IsValid() ↵Johnny Chen2011-05-171-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
* Add implementation of built-in function len() for those lldb containers withJohnny Chen2011-05-161-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
* Add implementation of '==' and '!=' for SBFileSpec and SBModule. Modify a ↵Johnny Chen2011-05-021-4/+23
| | | | | | test case to take advantage of 'ths_module == that_module'. llvm-svn: 130709
* Fix a typo in comment.Johnny Chen2011-05-021-1/+1
| | | | llvm-svn: 130698
* Update comments.Johnny Chen2011-04-291-2/+2
| | | | llvm-svn: 130533
OpenPOWER on IntegriCloud