| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
| |
It is now possible to use 'command alias --python' to define a command name that actually triggers execution of a Python function
(e.g. command alias --python foo foo_impl makes a command named 'foo' that runs Python function 'foo_impl')
The Python function foo_impl should have as signature: def foo_impl(debugger, args, stream, dict): where
debugger is an object wrapping an LLDB SBDebugger
args is the command line arguments, as an unparsed Python string
stream is an SBStream that represents the standard output
dict is an internal utility parameter and should be left untouched
The function should return None on no error, or an error string to describe any problems
llvm-svn: 137722
|
|
|
|
|
|
| |
and add some docstrings.
llvm-svn: 137528
|
|
|
|
|
|
| |
synthetic provider, despite it being optional
llvm-svn: 137330
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
to SBSymbolContextList and SBValueList.
Modify the test suite accordingly.
llvm-svn: 136990
|
|
|
|
|
|
| |
Add docstring for SBType, too.
llvm-svn: 136983
|
|
|
|
| |
llvm-svn: 136979
|
|
|
|
|
|
| |
SWIG doesn't care about the private section of class SBTypeList.
llvm-svn: 136976
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
parameter to give more info about any problem
The synthetic children providers now use the new (safer) APIs to get the values of objects
As a side effect, fixed an issue in ValueObject where ResolveValue() was not always updating the value before reading it
llvm-svn: 136861
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the SBType implementation classes.
Fixed LLDB core and the test suite to not use deprecated SBValue APIs.
Added a few new APIs to SBValue:
int64_t
SBValue::GetValueAsSigned(int64_t fail_value=0);
uint64_t
SBValue::GetValueAsUnsigned(uint64_t fail_value=0)
llvm-svn: 136829
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Completely new implementation of SBType
- Various enhancements in several other classes
Python synthetic children providers for std::vector<T>, std::list<T> and std::map<K,V>:
- these return the actual elements into the container as the children of the container
- basic template name parsing that works (hopefully) on both Clang and GCC
- find them in examples/synthetic and in the test suite in functionalities/data-formatter/data-formatter-python-synth
New summary string token ${svar :
- the syntax is just the same as in ${var but this new token lets you read the values
coming from the synthetic children provider instead of the actual children
- Python providers above provide a synthetic child len that returns the number of elements
into the container
Full bug fix for the issue in which getting byte size for a non-complete type would crash LLDB
Several other fixes, including:
- inverted the order of arguments in the ClangASTType constructor
- EvaluationPoint now only returns SharedPointer's to Target and Process
- the help text for several type subcommands now correctly indicates argument-less options as such
llvm-svn: 136504
|
|
|
|
|
|
| |
Fix the bug and add a test case.
llvm-svn: 136265
|
|
|
|
| |
llvm-svn: 136230
|
|
|
|
|
|
| |
simple iteration example.
llvm-svn: 136227
|
|
|
|
|
|
| |
know their own frames.
llvm-svn: 136194
|
|
|
|
| |
llvm-svn: 136187
|
|
|
|
| |
llvm-svn: 136147
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
introducing two files
to be included from lldb.swig: python-typemaps.swig and python-wrapper.swig.
llvm-svn: 136117
|
|
|
|
|
|
| |
end_of_list_test.
llvm-svn: 136016
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 135648
|
|
|
|
| |
llvm-svn: 135647
|
|
|
|
| |
llvm-svn: 135642
|
|
|
|
| |
llvm-svn: 135631
|
|
|
|
| |
llvm-svn: 135630
|
|
|
|
| |
llvm-svn: 135553
|
|
|
|
| |
llvm-svn: 135547
|
|
|
|
| |
llvm-svn: 135539
|
|
|
|
| |
llvm-svn: 135536
|
|
|
|
|
|
| |
They are not docstring'ed yet.
llvm-svn: 135531
|
|
|
|
| |
llvm-svn: 135459
|
|
|
|
| |
llvm-svn: 135441
|
|
|
|
| |
llvm-svn: 135436
|
|
|
|
| |
llvm-svn: 135432
|
|
|
|
|
|
| |
SBBreakpointLocation.
llvm-svn: 135430
|
|
|
|
| |
llvm-svn: 135419
|
|
|
|
| |
llvm-svn: 135417
|
|
|
|
|
|
| |
swigging the header files.
llvm-svn: 135416
|
|
|
|
| |
llvm-svn: 135405
|
|
|
|
|
|
| |
objects by default.
llvm-svn: 135357
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
| |
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 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
|