Commit Graph

172 Commits

Author SHA1 Message Date
Johnny Chen 3517d12826 memory read -f X doesn't print anything (lldb should warn when encountering an unsupported byte size)
Also add a test sequence for it.

rdar://problem/10876841

llvm-svn: 150766
2012-02-16 23:09:08 +00:00
Johnny Chen 325fa8a77c memory read prints out duplicate entries when using vector formats
DataExtractor::Dump() needs to supply the correct cursor when delegating to the child DataExtractor::Dump() calls.
Add a regression test file.
 
rdar://problem/10872908

llvm-svn: 150729
2012-02-16 22:06:47 +00:00
Johnny Chen 973cf9e8ae Remove the functionality of using 'frame variable -w' to set a watchpoint now that 'watchpoint set variable/expression'
is working.  Also update the relevant test cases.

llvm-svn: 150514
2012-02-14 22:00:40 +00:00
Johnny Chen 3e3f92eaf9 Add a test case for completion from 'settings set target.exec' to 'settings set target.exec-search-paths '.
llvm-svn: 150427
2012-02-13 23:25:06 +00:00
Johnny Chen acdde195fb Add error handling for missing option terminator "--" and a test scenario for it.
Also fix a logic error for a missing return stmt. Oops.

llvm-svn: 150195
2012-02-09 18:44:27 +00:00
Johnny Chen 2ffa754a6f After discussions with Jim and Greg, modify the 'watchpoint set' command to become a mutiword command
with subcommand 'expression' and 'variable'.  The first subcommand is for supplying an expression to
be evaluated into an address to watch for, while the second is for watching a variable.

'watchpoint set expression' is a raw command, which means that you need to use the "--" option terminator
to end the '-w' or '-x' option processing and to start typing your expression.

Also update several test cases to comply and add a couple of test cases into TestCompletion.py,
in particular, test that 'watchpoint set ex' completes to 'watchpoint set expression ' and that
'watchpoint set var' completes to 'watchpoint set variable '.

llvm-svn: 150109
2012-02-08 22:37:48 +00:00
Johnny Chen 34ddc8db22 Refine the 'watchpoint set' command to now require either the '-v' option (for watching of a variable) or
the '-e' option (for watching of an address) to be present.

Update some existing test cases with the required option and add some more test cases.

Since the '-v' option takes <variable-name> and the '-e' option takes <expr> as the command arg,
the existing infrastructure for generating the option usage can produce confusing help message,
like:

  watchpoint set -e [-w <watch-type>] [-x <byte-size>] <variable-name | expr>
  watchpoint set -v [-w <watch-type>] [-x <byte-size>] <variable-name | expr>

The solution adopted is to provide an extra member field to the struct CommandArgumentData called
(uint32_t)arg_opt_set_association, whose purpose is to link this particular argument data with some
option set(s).  Also modify the signature of CommandObject::GetFormattedCommandArguments() to:

  GetFormattedCommandArguments (Stream &str, uint32_t opt_set_mask = LLDB_OPT_SET_ALL)

it now takes an additional opt_set_mask which can be used to generate a filtered formatted command
args for help message.

Options::GenerateOptionUsage() impl is modified to call the GetFormattedCommandArguments() appropriately.
So that the help message now looks like:

  watchpoint set -e [-w <watch-type>] [-x <byte-size>] <expr>
  watchpoint set -v [-w <watch-type>] [-x <byte-size>] <variable-name>

rdar://problem/10703256

llvm-svn: 150032
2012-02-08 01:13:31 +00:00
Johnny Chen 3397e7cd22 Fix a typo in specifying the error path when launching the inferior.
llvm-svn: 149899
2012-02-06 21:07:21 +00:00
Enrico Granata 4cee9e5247 Fixing issues where synthetic children providers for STL containers std::list and std::map where not doing their job properly
llvm-svn: 149700
2012-02-03 18:11:52 +00:00
Johnny Chen 60b4f13c11 Add a couple of simple completion test cases for 'target ' and 'target va'.
llvm-svn: 149656
2012-02-03 01:14:42 +00:00
Enrico Granata a6a60d0d87 Added a new --omit-names (-O, uppercase letter o) option to "type summary add".
When used in conjunction with --inline-children, this option will cause the names of the values to be omitted from the output. This can be beneficial in cases such as vFloat, where it will compact the representation from
([0]=1,[1]=2,[2]=3,[3]=4) to (1, 2, 3, 4).
Added a test case to check that the new option works correctly.
Also took some time to revisit SummaryFormat and related classes and tweak them for added readability and maintainability.
Finally, added a new class name to which the std::string summary should be applied.

llvm-svn: 149644
2012-02-02 23:34:52 +00:00
Johnny Chen fd72fbef41 For processes which are not in one of the "launched and stopped" state, 'target variable' command
should use Target::ReadMemory() call to read from the file section offset address.
Also remove the @expectedFailure decorator..

'target variable' command fails if the target program has been run
rdar://problem/9763907

llvm-svn: 149629
2012-02-02 19:55:18 +00:00
Johnny Chen ccfa90a5fe Fix indentation.
llvm-svn: 149529
2012-02-01 19:35:55 +00:00
Johnny Chen 3cfb9c672c Add @expectedFailure decorators.
llvm-svn: 149519
2012-02-01 18:26:25 +00:00
Enrico Granata 8680c713a6 remove spurious leftover code from std::list testcase
llvm-svn: 149461
2012-02-01 00:43:33 +00:00
Enrico Granata 896e4bd7d5 Test case for std::map synthetic children provider (currently an expected failure)
llvm-svn: 149421
2012-01-31 21:30:00 +00:00
Enrico Granata 726fa56fcb Test case for std::list synthetic children provider (currently an expected failure)
llvm-svn: 149420
2012-01-31 21:27:09 +00:00
Enrico Granata d197e7b24f Test case for std::vector synthetic children provider
llvm-svn: 149419
2012-01-31 21:03:57 +00:00
Enrico Granata 56a27bb5fa Splitting test case for Python synthetic children: part 1 test is only testing the synthetic children feature itself. More test cases will be commited for individual STL containers
llvm-svn: 149393
2012-01-31 17:50:00 +00:00
Johnny Chen 6b68c98f7d Add some more test cases for the "watchpoint set" command.
llvm-svn: 149324
2012-01-31 01:26:28 +00:00
Johnny Chen 5b3b5f07fe Fixed a typo in the test case. Updated comment.
llvm-svn: 149295
2012-01-30 23:17:07 +00:00
Johnny Chen dedb67ab9b Add "watch set" command as a more general interface in conjunction with "frame var -w".
Also add test cases for watching a variable as well as a location expressed as an expression.

o TestMyFirstWatchpoint.py:

  Modified to test "watchpoint set -w write global".

o TestWatchLocationWithWatchSet.py:

  Added to test "watchpoint set -w write -x 1 g_char_ptr + 7" where a contrived example program
  with several threads is supposed to only access the array index within the range [0..6], but
  there's some misbehaving thread writing past the range.

rdar://problem/10701761

llvm-svn: 149280
2012-01-30 21:46:17 +00:00
Johnny Chen 11c00fc7b2 Move argument checking/manipulation into the front of the function.
llvm-svn: 148974
2012-01-25 20:50:21 +00:00
Johnny Chen 8d24390cad Clearify some comment.
llvm-svn: 148972
2012-01-25 20:29:26 +00:00
Johnny Chen 78e49e7fee Cleanup docstring and remove dead code.
llvm-svn: 148971
2012-01-25 20:25:38 +00:00
Johnny Chen f41385f9be Add some more test cases for command completion:
o complete an unambiguous option
  o complete/list the available option values
  o complete/list the candidate command names

llvm-svn: 148899
2012-01-25 01:37:36 +00:00
Johnny Chen 8cc80b2914 Followup check in for http://llvm.org/viewvc/llvm-project?rev=148491&view=rev,
where we changed the CommandObjectSettingsSet object impl to require raw command string.

Do the same for CommandObjectSettingsAppend/InsertBefore/InsertAfter classes and
add test cases for basic functionalities as well as for variable name completion.

llvm-svn: 148719
2012-01-23 19:49:28 +00:00
Johnny Chen 5928f64e2c Followup check in for http://llvm.org/viewvc/llvm-project?rev=148491&view=rev,
where we changed the CommandObjectSettingsSet object impl to require raw command string.

Do the same for CommandObjectSettingsReplace class and add two test cases; one for
the "settings replace" command and the other to ensure that completion for variable
name still works. 

llvm-svn: 148615
2012-01-21 01:45:18 +00:00
Johnny Chen 5b201cf86c Add comment.
llvm-svn: 148602
2012-01-21 00:08:37 +00:00
Johnny Chen 384dd63189 A little bit of cleanup to make the code more understandable.
llvm-svn: 148600
2012-01-20 23:34:35 +00:00
Johnny Chen 98aceb08f8 o CommandObjectSettingsSet.cpp:
Fix a bug where "settings set -r th" wouldn't complete.

o UserSettingsController.cpp:

  Fix a bug where "settings set target.process." wouldn't complete.

o test/functionalities/completion:

  Add various completion test cases related to 'settings set' command.

llvm-svn: 148596
2012-01-20 23:02:51 +00:00
Johnny Chen a28b89c700 rdar://problem/10712130
Fixed an issue where backtick char is not properly honored when setting the frame-format variable, like the following:

(lldb) settings set frame-format frame #${frame.index}: ${frame.pc}{ ${module.file.basename}{`${function.name-with-args}${function.pc-offset}}}{ at ${line.file.basename}:${line.number}}\n
(lldb) settings show frame-format
frame-format (string) = "frame #${frame.index}: ${frame.pc}{ `${module.file.basename}{${function.name-with-args}${function.pc-offset}}}{` at ${line.file.basename}:${line.number}}\n"
(lldb)

o CommandObjectSettings.h/.cpp:

  Modify the command object impl to require raw command string instead of parsed command string,
  which also fixes an outstanding issue that customizing the prompt with trailing spaces doesn't
  work.

o Args.cpp:

  During CommandInterpreter::HandleCommand(), there is a PreprocessCommand phase which already
  strips/processes pairs of backticks as an expression eval step.  There's no need to treat
  a backtick as starting a quote.

o TestAbbreviations.py and change_prompt.lldb:

  Fixed incorrect test case/logic.

o TestSettings.py:

  Remove expectedFailure decorator.

llvm-svn: 148491
2012-01-19 19:22:41 +00:00
Johnny Chen fb05d23789 Add some description for this test directory.
llvm-svn: 148075
2012-01-13 00:24:11 +00:00
Johnny Chen 7840c81df2 Modify a couple of Makefiles to use clang instead of gcc, since gcc is being deprecated.
llvm-svn: 148071
2012-01-12 23:50:28 +00:00
Johnny Chen fe14162e71 rdar://problem/10680957
Need a test case that tests DWARF with .o in .a files

test/functionalities/archives:

Produces libfoo.a from a.o and b.o.  Test breaking inside functions defined
inside the libfoo.a BSD Archive.

test/make/makefile.rules:

Some additional rules to sepcify archive building.  For example:

ARCHIVE_NAME := libfoo.a
ARCHIVE_C_SOURCES := a.c b.c

llvm-svn: 148066
2012-01-12 23:09:42 +00:00
Jim Ingham f74c2348b7 Added a bunch more structure return tests.
llvm-svn: 147212
2011-12-23 00:49:32 +00:00
Johnny Chen a33843f5b4 Decorate the two test cases in TestReturnValue.py as i386 only expectedFailure, aka @expectedFailurei386.
llvm-svn: 147177
2011-12-22 21:14:31 +00:00
Jim Ingham ef65160016 Improve the x86_64 return value decoder to handle most structure returns.
Switch from GetReturnValue, which was hardly ever used, to GetReturnValueObject
which is much more convenient.
Return the "return value object" as a persistent variable if requested.

llvm-svn: 147157
2011-12-22 19:12:40 +00:00
Johnny Chen 1d9cb8a184 http://llvm.org/bugs/show_bug.cgi?id=11569
LLDBSwigPythonCallCommand crashes when a command script returns an object 

Add more robustness to LLDBSwigPythonCallCommand.  It should check whether the returned Python object
is a string, and only assign it as the error msg when the check holds.
Also add a regression test.

llvm-svn: 146584
2011-12-14 20:40:27 +00:00
Johnny Chen 798b0c8340 Print out the breakpoint description only if self.TraceOn() is True.
llvm-svn: 146539
2011-12-14 01:36:04 +00:00
Jim Ingham e81fc8e514 Add a pthreads testcase to make sure the two-step of running and expression,
having the block, then timing out & letting all threads run actually works.

llvm-svn: 146471
2011-12-13 04:04:44 +00:00
Johnny Chen 60e2c6aa43 rdar://problem/10501020
ClangASTSource::~ClangASTSource() was calling

    ClangASTContext *scratch_clang_ast_context = m_target->GetScratchClangASTContext();

which had the side effect of deleting this very ClangASTSource instance.  Not good.
Change it to

    // We are in the process of destruction, don't create clang ast context on demand
    // by passing false to Target::GetScratchClangASTContext(create_on_demand).
    ClangASTContext *scratch_clang_ast_context = m_target->GetScratchClangASTContext(false);

The Target::GetScratchClangASTContext(bool create_on_demand=true) has a new signature.

llvm-svn: 145537
2011-11-30 23:18:53 +00:00
Sean Callanan 09ab4b777c Added support to the Objective-C language runtime
to find Objective-C class types by looking in the
symbol tables for the individual object files.

I did this as follows:

- I added code to SymbolFileSymtab that vends
  Clang types for symbols matching the pattern
  "_OBJC_CLASS_$_NSMyClassName," making them
  appear as Objective-C classes.  This only occurs
  in modules that do not have debug information,
  since otherwise SymbolFileDWARF would be in
  charge of looking up types.

- I made a new SymbolVendor subclass for the
  Apple Objective-C runtime that is in charge of
  making global lookups of Objective-C types.  It
  currently just sends out type lookup requests to
  the appropriate SymbolFiles, but in the future we
  will probably extend it to query the runtime more
  completely.

I also modified a testcase whose behavior is changed
by the fact that we now actually return an Objective-C
type for __NSCFString.

llvm-svn: 145526
2011-11-30 22:11:59 +00:00
Johnny Chen 99bb50c10d rdar://problem/9211445
Fix wrong test logic in test_modules_search_paths().  Add additional exercising of 'target modules search-paths list/query".
There is a reproducible crash if 'target modules search-paths clear' is exercised during test teardown.
So we currently comment out the stmt as follows:

        # Add teardown hook to clear image-search-paths after the test.
        # rdar://problem/10501020
        # Uncomment the following to reproduce 10501020.
        #self.addTearDownHook(lambda: self.runCmd("target modules search-paths clear"))

llvm-svn: 145466
2011-11-30 01:33:59 +00:00
Greg Clayton cbe1a331ae Fixed an issue where we might cause our test suite to exit if we end up
concatenating a string with "None" in python. Using a python format string
gets us around this by handling it gracefully.

llvm-svn: 145225
2011-11-28 03:17:13 +00:00
Johnny Chen 5d77667f28 Redirect the stderr output into a file so as to not pollute the terminal.
llvm-svn: 144958
2011-11-18 00:58:29 +00:00
Johnny Chen 6949f38985 Do not print debug messages if self.TraceON() is False.
llvm-svn: 144945
2011-11-18 00:30:58 +00:00
Jim Ingham 0faa43f964 Do a better job of detecting when a breakpoint command has set the target running again (except you have to ignore
cases where the breakpoint runs expressions, those don't count as really "running again").

llvm-svn: 144064
2011-11-08 03:00:11 +00:00
Greg Clayton 1d8859668f Moved many of the "settings" that used to be in "target.process.*" to just
be in the target. All of the environment, args, stdin/out/err files, etc have
all been moved. Also re-enabled the ability to launch a process in a separate
terminal on MacOSX.

llvm-svn: 144061
2011-11-08 02:43:13 +00:00
Johnny Chen db02f3b4f4 Fix the test suite failure. The particular line in the test case was there since the initial version
dated 2010-21-15.  The test started failure recently probably due to work done on the command parsing.
Anyway, the specific test sequence is invalid and is fixed now.

llvm-svn: 144039
2011-11-07 23:26:12 +00:00