Commit Graph

3592 Commits

Author SHA1 Message Date
Johnny Chen 16dcf718d3 Add a commnad to set a condition for a watchpoint. Example:
watchpoint modify -c 'global==5'

modifies the last created watchpoint so that the condition expression
is evaluated at the stop point to decide whether we should proceed with
the stopping.

Also add SBWatchpont::SetCondition(const char *condition) to set condition
programmatically.

Test cases to come later.

llvm-svn: 142227
2011-10-17 18:58:00 +00:00
Sean Callanan 6d9f5db468 Handled the call operator properly.
llvm-svn: 142033
2011-10-15 01:15:07 +00:00
Jim Ingham a5ce6c88f9 Make "next" and "step-out" work when in stepping over or out of inlined functions.
llvm-svn: 142031
2011-10-15 00:57:28 +00:00
Jim Ingham c4c9fedc72 Make the step range plans capable of supporting multiple ranges. Also make their constructors public, there isn't any good reason why you shouldn't be able to make these plans.
llvm-svn: 142026
2011-10-15 00:24:48 +00:00
Jim Ingham 10c4b249fc Make the "log enable lldb-step" output easier to parse.
llvm-svn: 142025
2011-10-15 00:23:43 +00:00
Jim Ingham 37cfeab3c0 Quiet the default "log enable lldb step" output down a little bit.
llvm-svn: 142024
2011-10-15 00:21:37 +00:00
Greg Clayton 147e1fa298 Add function decls to their parent decl context.
llvm-svn: 142011
2011-10-14 22:47:18 +00:00
Sean Callanan 4b4f9b40fa Added a buildbot script that automatically checks
out the latest LLDB, LLVM and Clang and makes sure
they work okay together.  The buildbot is currently
Mac OS X only because it uses xcodebuild.

Right now, the portion that runs the LLDB test
suite is commented out because of code-signing
problems (specifically, on Mac OS 10.7 a UI dialog
appears asking for the user's permission to attach
to the inferior process).

You can use the buildbot like this:

./scripts/buildbot.py -b /tmp/lldb-build -l /tmp/lldb.log

/tmp/lldb-build and /tmp/lldb.log should not exist
when the script is run.

/tmp/lldb-build is a temporary directory and is
removed at the end of a normal execution.

/tmp/lldb.log is a log file that sticks around.

The buildbot does not require built versions of anything;
it will do the building itself.

llvm-svn: 142006
2011-10-14 21:43:51 +00:00
Greg Clayton 030a204664 Make sure we create only unique one namespace per AST when parsing the DWARF.
llvm-svn: 142005
2011-10-14 21:34:45 +00:00
Sean Callanan 7dd9812675 Improved expression logging. Now all calls to
FindExternalVisibleDecls and FindExternalLexicalDecls
are marked and given unique IDs, so that all logging
done as part of their execution can be traced back to
the proper call.

Also there was some logging that really wasn't helpful
in most cases so I disabled it unless verbose logging
(log enable -v lldb expr) is enabled.

llvm-svn: 141987
2011-10-14 20:34:21 +00:00
Johnny Chen ed456eb0a9 Add SBWatchpoint::GetError() API, which is not currently populated as yet.
llvm-svn: 141979
2011-10-14 19:15:48 +00:00
Johnny Chen 6283f4b67a Remove debug 'print watchpoint' statement.
llvm-svn: 141965
2011-10-14 18:10:00 +00:00
Johnny Chen fc807f84ed Rename directory command_python to command_script, and the test file, too.
llvm-svn: 141963
2011-10-14 17:37:38 +00:00
Greg Clayton 5a31471e72 Added the ability to run expressions in any command. Expressions can be
inserted in commands by using backticks:

(lldb) memory read `$rsp-16` `$rsp+16`
(lldb) memory read  -c `(int)strlen(argv[0])` `argv[0]`

The result of the expression will be inserted into the command as a sort of
preprocess stage where this gets done first. We might need to tweak where this
preprocess stage goes, but it is very functional already.

Added ansi color support to the Debugger::FormatPrompt() so you can use things
like "${ansi.fg.blue}" and "${ansi.bold}" many more. This helps in adding 
colors to your prompts without needing to know the ANSI color code strings.

llvm-svn: 141948
2011-10-14 07:41:33 +00:00
Johnny Chen f5be9e3759 Add a test case to exercise the newly added SB API:
lldb::SBWatchpoint
SBTarget::WatchAddress (lldb::addr_t addr, size_t size, bool read, bool write)

llvm-svn: 141931
2011-10-14 01:16:39 +00:00
Sean Callanan 187de46132 Improved logging for FindExternalLexicalDecls to
make it easier to track down which members belong
to which structs (and which call to 
FindExternalLexicalDecls is doing the reporting).

llvm-svn: 141930
2011-10-14 01:15:27 +00:00
Johnny Chen 4c3e140247 Fix wrong docstring with respect to API usage.
llvm-svn: 141928
2011-10-14 00:56:28 +00:00
Johnny Chen 01a678603a SBValue::Watch() and SBValue::WatchPointee() are now the official API for 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
2011-10-14 00:42:25 +00:00
Greg Clayton cb5860a70b Modified the DWARF parser to take care of a 1 clang::DeclContext to many
DIEs. Prior to this fix, there was a 1 to 1 mapping.

llvm-svn: 141917
2011-10-13 23:49:28 +00:00
Greg Clayton 20568dd981 Fixed a case where we might end up trying to parse a type in the DWARF parser for a method whose class isn't currently in the process of completing itself. Currently, methods of a class, must be parsed when the class type that contains the method is asked to complete itself through the clang::ExternalASTSource virtual functions. Now we "do the right thing" by checking if the class is being defined, and if so we parse it, else we tell the class to complete itself so everything happens correctly.
llvm-svn: 141908
2011-10-13 23:13:20 +00:00
Sean Callanan c6bba3e46d Cleaned up a few functions that never get used.
Specifically, the expression parser used to use
functions attached to SymbolContext to do lookups,
but nowadays it searches a ModuleList or Module
directly instead.  These functions had no
remaining clients so I removed them to prevent
bit rot.

I also removed a stray callback function from
ClangExpressionDeclMap.

llvm-svn: 141899
2011-10-13 22:18:56 +00:00
Sean Callanan ebe6067a8c Enabled the namespace-specific search functionality,
which had previously been commented out while I tested
it.  It's not fully working yet, but it doesn't break
our testsuite and it's an important piece of
functionality.

Also added some logging to SymbolFileDWARF to help
diagnose entities that are found in a symbol file,
but do not reside in the expected namespace.

llvm-svn: 141894
2011-10-13 21:50:33 +00:00
Sean Callanan c41e68b127 Moved the list of found namespaces into the search
context object.  Having it populated and registered
within a single FindExternalVisibleDecls call worked
fine when there was only one call (i.e., when we were
just looking in the global namespace).  

However, now FindExternalVisibleDecls is called for
nested namespaces as well, which means that it is
called not once but many times (once per module in
which the parent namespace appears).  This means that
the namespace mapping is built up across many calls
to the inferior FindExternalVisibleDecls, so I moved
it into a data structure (the search context) that is
shared by all calls.

I also added some logging to make it easier to see
what is happening during a namespace search, and 
cleaned up some existing logging.

llvm-svn: 141888
2011-10-13 21:08:11 +00:00
Greg Clayton 2a14f17a65 Revert the change to "target variable" that was causing test suite failures.
llvm-svn: 141879
2011-10-13 18:31:02 +00:00
Greg Clayton 1b282f9619 Cleaned up the SBWatchpoint public API.
llvm-svn: 141876
2011-10-13 18:08:26 +00:00
Sean Callanan b96ff33b0e Removed namespace qualification from symbol queries.
llvm-svn: 141866
2011-10-13 16:49:47 +00:00
Sean Callanan 213fdb8bf6 Completed the glue that passes a ClangNamespaceDecl *
down through Module and SymbolVendor into SymbolFile.
Added checks to SymbolFileDWARF that restrict symbol
searches when a namespace is passed in.

llvm-svn: 141847
2011-10-13 01:49:10 +00:00
Johnny Chen 7596f9373a Add 'cd -' feature to change to the previous working directory.
llvm-svn: 141846
2011-10-13 01:20:34 +00:00
Greg Clayton 4f76b23764 Always use the full variable name when dumping globals since they might
be in namespaces.

llvm-svn: 141845
2011-10-13 01:14:39 +00:00
Greg Clayton aa044960b5 Add a version of ResolveFunction that takes a "const DWARFDebugInfoEntry *"
and a "DWARFCompileUnit *" to avoid doing a DIE lookup twice and to prepare
for using namespaces in the lookups.

llvm-svn: 141843
2011-10-13 00:59:38 +00:00
Sean Callanan 8e5b8b9631 Now that we know the values are going to stick around,
we don't need to look them up again when materializing.

Switched over the materialization mechanism (for JIT
expressions) and the lookup mechanism (for interpreted
expressions) to use the VariableSP/Symbol that were
found during parsing.

llvm-svn: 141839
2011-10-13 00:09:20 +00:00
Greg Clayton bfe3dd4d8b Added a function to test if a ClangNamespaceDecl matches the current symbol
file. This will help us to minimize lookups that can't possibly match anything
in the current symbol file.

llvm-svn: 141838
2011-10-13 00:00:53 +00:00
Greg Clayton 2506a7a959 Added the ability to see if a DIE is contained in a namespace.
llvm-svn: 141832
2011-10-12 23:34:26 +00:00
Johnny Chen c6d3b6e7a6 Minor fix.
llvm-svn: 141826
2011-10-12 22:25:13 +00:00
Johnny Chen 4ffde88b42 Add pointer to the examples/customization directory for examples of lldb customizations.
llvm-svn: 141823
2011-10-12 22:22:09 +00:00
Sean Callanan e3aef1d063 Extended the lifetime of Clang parser objects to the
lifetime of ClangExpressionDeclMap.  This allows
ClangExpressionVariables found during parsing to be
queried for their containing namespaces during
expression execution.

Other clients (like ClangFunction) explicitly delete
this state, so they should not result in any memory
leaks.

llvm-svn: 141821
2011-10-12 22:20:02 +00:00
Johnny Chen 724e62bb4a Prepend '~' to the sys.path so that ~/utils.py takes precedence.
llvm-svn: 141817
2011-10-12 21:51:58 +00:00
Johnny Chen 7f01ac39b9 Patch by Enrico to provide an example of 'import' commnad for importing .py/.pyc files.
llvm-svn: 141810
2011-10-12 20:47:04 +00:00
Sean Callanan ca4e0fd7e6 Refactoring in preparation for having multiple
calls to the FindExternalVisibleDecls function.

FindExternalVisibleDecls was recording whether
it had found generic function symbols in variables
that were local to the function.  Now, however,
multiple calls occur in response to one request
from Clang, since we may be searching across
namespaces.  To support that, I moved the local
variables into a bitfield in NameSearchContext.

llvm-svn: 141808
2011-10-12 20:29:25 +00:00
Johnny Chen de2ff3b64e Add reference to ToT/examples/customization for more customization examples.
llvm-svn: 141800
2011-10-12 19:20:04 +00:00
Johnny Chen de6ade01d0 Add an examples/customization directory and add a subdirectory pwd-cd-and-system
which contains the lldb init file and a utils.py Python module in order to add
the 'pwd', 'cd', and 'system' lldb commands.

llvm-svn: 141799
2011-10-12 19:16:06 +00:00
Sean Callanan 1a2c5386cd Made the expression parser's type search call the
proper namespace-aware APIs.

llvm-svn: 141797
2011-10-12 18:44:30 +00:00
Sean Callanan 4c3977c278 Added support to ClagnExpressionDeclMap for finding
data symbols in namespaces.

llvm-svn: 141792
2011-10-12 18:00:53 +00:00
Johnny Chen 04a101d475 Add cleanups for 'command script add' to TestCommandPython.py.
llvm-svn: 141790
2011-10-12 17:50:41 +00:00
Sean Callanan 25ea08ef8c Changed FindExternalVisibleDecls() to use the module
level FindFunctions() where appropriate and not use
SymbolContext::FindFunctionsByName().

llvm-svn: 141789
2011-10-12 17:38:09 +00:00
Sean Callanan 03267a7068 Oops, committed my local build settings. Fixed that.
llvm-svn: 141784
2011-10-12 17:08:22 +00:00
Sean Callanan 1fd3f4f14c Made FindGlobalVariable() optionally search a specific
module and namespace.  Also made it use FindGlobalVariables()
instead of the more heavyweight 
GetVariablesForVariableExpressionPath().

llvm-svn: 141783
2011-10-12 16:59:31 +00:00
Sean Callanan b6d70ebc0a Added ClangNamespaceDecl * parameters to several
core Module functions that the expression parser
will soon be using.

llvm-svn: 141766
2011-10-12 02:08:07 +00:00
Sean Callanan 8897224363 Cleanups in preparation for making FindExternalVisibleDecls
look in individual modules rather than globally.

Also some whitespace fixes.

llvm-svn: 141765
2011-10-12 01:39:28 +00:00
Johnny Chen c79eec0c18 Add description of a more capable 'cd' command using 'command script add'.
llvm-svn: 141764
2011-10-12 01:28:23 +00:00