diff options
author | Enrico Granata <granata.enrico@gmail.com> | 2011-07-29 19:53:35 +0000 |
---|---|---|
committer | Enrico Granata <granata.enrico@gmail.com> | 2011-07-29 19:53:35 +0000 |
commit | 6f3533fb1d742620328b4fcc79410d3e09d6eb8d (patch) | |
tree | 4ed75acf7c94fefcab457f17a568827d5b0e3c22 /lldb/source/Core/Debugger.cpp | |
parent | ce0ceebb1c5f896e992e1cac36fad732daf55cb0 (diff) | |
download | bcm5719-llvm-6f3533fb1d742620328b4fcc79410d3e09d6eb8d.tar.gz bcm5719-llvm-6f3533fb1d742620328b4fcc79410d3e09d6eb8d.zip |
Public API changes:
- 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
Diffstat (limited to 'lldb/source/Core/Debugger.cpp')
-rw-r--r-- | lldb/source/Core/Debugger.cpp | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/lldb/source/Core/Debugger.cpp b/lldb/source/Core/Debugger.cpp index dff2eb00fe8..a217ddb36ec 100644 --- a/lldb/source/Core/Debugger.cpp +++ b/lldb/source/Core/Debugger.cpp @@ -1004,16 +1004,28 @@ Debugger::FormatPrompt switch (var_name_begin[0]) { case '*': - { - if (!vobj) - break; - do_deref_pointer = true; - var_name_begin++; - } - // Fall through... - case 'v': + case 's': { + if (!vobj) + break; + + // check for *var and *svar + if (*var_name_begin == '*') + { + do_deref_pointer = true; + var_name_begin++; + } + if (*var_name_begin == 's') + { + vobj = vobj->GetSyntheticValue(lldb::eUseSyntheticFilter).get(); + var_name_begin++; + } + + // should be a 'v' by now + if (*var_name_begin != 'v') + break; + ValueObject::ExpressionPathAftermath what_next = (do_deref_pointer ? ValueObject::eDereference : ValueObject::eNothing); ValueObject::GetValueForExpressionPathOptions options; |