Commit Graph

6220 Commits

Author SHA1 Message Date
Sean Callanan fa4fab77d4 Modified the expression parser's class wrapper to
support reporting "this" as a templated class.  The
expression parser wraps expressions in C++ methods
as methods with the signature

$__lldb_class::$__lldb_expr(...)

and previously responded to clang's queries about
$__lldb_class with the type of *this.  This didn't
work if *this was a ClassTemplateSpecializationDecl
because ClassTemplateSpecializationDecls can't be
the result of simple name queries.

Instead what we do now is respond that $__lldb_class
is a typedef and that the target of the typedef is
the (potentially templated) type of *this.  That is
much more robust.

Thanks to John McCall for key insights.

<rdar://problem/10987183>

llvm-svn: 174153
2013-02-01 06:55:48 +00:00
Greg Clayton abb487f57a Make sure a value is returned for Thread::ReturnFromFrame().
llvm-svn: 174141
2013-02-01 02:52:31 +00:00
Greg Clayton 13fbb99107 Allow the target to give out the size of the red zone for given ABIs.
A bit of cleanup in the heap module. 

llvm-svn: 174129
2013-02-01 00:47:49 +00:00
Greg Clayton 3dcaa2c8c8 Get rid for switch statement warning for unhandled cases.
llvm-svn: 174128
2013-02-01 00:46:49 +00:00
Greg Clayton 4959b7b8f5 Fixed register dumping for contained-regs.
llvm-svn: 174127
2013-02-01 00:45:52 +00:00
Jim Ingham 93208b8680 Add "thread return -x" to unwind the innermost user called expression (if you happen to have stopped in it due to a crash.)
Make the message when you hit an crash while evaluating an expression a little clearer, and mention "thread return -x".

rdar://problem/13110464

llvm-svn: 174095
2013-01-31 21:46:01 +00:00
Jim Ingham afc1b12f01 Change the default behavior for unwinding and breakpoints when running expressions.
<rdar://problem/13121442>

llvm-svn: 174082
2013-01-31 19:48:57 +00:00
Enrico Granata 8471f0477b Making sure a Pythonless build of LLDB works by #ifdef-ing out formatters code.
llvm-svn: 174074
2013-01-31 18:24:22 +00:00
Greg Clayton e7fc9ccf2e Added the ability to search segments for data. Currently __TEXT, __LINKEDIT and __PAGEZERO are excluded.
Added many more cleanups to the output.

llvm-svn: 174045
2013-01-31 06:38:09 +00:00
Greg Clayton 85e62eca66 expressions + C++11 lambdas == cooooool!!!
C++11 lambdas that don't capture anything can be used as static callback functions!

Heavily modified this python module to be able to not require a dylib in order to traverse the heap allocations.

Re-implemented the ptr_refs, objc_refs, malloc_info and cstr_refs to use complex expressions that use lambdas to do all static callback function work.

llvm-svn: 173989
2013-01-30 22:57:34 +00:00
Jason Molenda a46db7728e Verified that the plugin.dynamic-loader.darwin-kernel.scan-type
setting is working correctly now; remove the #if 0's around its
use.

llvm-svn: 173982
2013-01-30 22:19:51 +00:00
Enrico Granata 54f279fff6 <rdar://problem/12552374> & <rdar://problem/13100674>
The vtable pointer field is not necessarily a pointer and hence cannot be used for validation

llvm-svn: 173947
2013-01-30 17:44:16 +00:00
Dmitri Gribenko aa073de21a llvm/Basic/ConvertUTF.h now exposes all functions without macro tricks
llvm-svn: 173937
2013-01-30 15:12:30 +00:00
Dmitri Gribenko 024aa8539f UTF conversion routines were moved from clang/Basic to llvm/Support
llvm-svn: 173935
2013-01-30 15:05:59 +00:00
Jason Molenda 6396922186 Fix one obvious thinko with the plugin.dynamic-loader.darwin-kernel.scan-type setting
handling that was probably the source of the settings problem.  Need to verify that
it's working correctly tomorrow though.

llvm-svn: 173894
2013-01-30 04:48:16 +00:00
Jason Molenda 6ba6d3d179 <rdar://problem/12491235>
Enhance lldb so it can search for a kernel in memory when attaching
to a remote system.  Remove some of the code that was doing this
from ProcessMachCore and ProcessGDBRemote and put it in
DynamicLoaderDarwinKernel.

I've added a new setting, plugin.dynamic-loader.darwin-kernel.scan-type
which can be set to

 none   - for environments where reading random memory can cause a
          device crash 
 basic  - look at one fixed location in memory for a kernel load address, 
          plus the contents of that address
 fast-scan - the default, tries "basic" and then looks for the kernel's
          mach header near the current pc value when lldb connects
 exhaustive-scan - on 32-bit targets, step through the entire range where
          the kernel can be loaded, looking for the kernel binary

I don't have the setting set up correctly right now, I'm getting back unexpected
values from the Property system, but I'll figure that out tomorrow and fix.
Besides that, all of the different communication methods / types of kernels 
appear to be working correctly with these changes.

llvm-svn: 173891
2013-01-30 04:39:32 +00:00
Daniel Malea 30b95a3668 Fix build problems with libstdc++ 4.6/4.7
- remove nullptr from initialization of shared_ptrs

llvm-svn: 173870
2013-01-30 01:01:11 +00:00
Filipe Cabecinhas 45f0c66bc3 Use printf instead of echo -n (the latter won't work on OS X's /bin/sh)
llvm-svn: 173867
2013-01-30 00:48:11 +00:00
Greg Clayton 325e869463 Remove debug code and commented out code that was left in.
llvm-svn: 173865
2013-01-30 00:29:53 +00:00
Filipe Cabecinhas 8bc6534701 Continuing the fix for the r173732 fix. Now lldb gets built with Makefiles (Darwin).
llvm-svn: 173864
2013-01-30 00:28:58 +00:00
Greg Clayton 1b3815cbf4 <rdar://problem/9141269>
Cleaned up the objective C name parsing code to use a class.

Now breakpoints that are set by name that are objective C methods without the leading '+' or '-' will resolve. We do this by expanding all the objective C names for a given string. For example:

(lldb) b [MyString cStringUsingEncoding:]

Will set a breakpoint with multiple possible names: 
-[MyString cStringUsingEncoding:]
+[MyString cStringUsingEncoding:]

Also if you have a category, it will strip the category and set a breakpoint in all variants:

(lldb) [MyString(my_category) cStringUsingEncoding:]

Will resolve to the following names:

-[MyString(my_category) cStringUsingEncoding:]
+[MyString(my_category) cStringUsingEncoding:]
-[MyString cStringUsingEncoding:]
+[MyString cStringUsingEncoding:]

Likewise when we have:

(lldb) b -[MyString(my_category) cStringUsingEncoding:]

It will resolve to two names:
-[MyString(my_category) cStringUsingEncoding:]
-[MyString cStringUsingEncoding:]

llvm-svn: 173858
2013-01-30 00:18:29 +00:00
Filipe Cabecinhas 276a08b5b1 Actually build DataFormatters dir. Fix for the r173732 fix.
llvm-svn: 173840
2013-01-29 22:20:20 +00:00
Greg Clayton b25406cd9d <rdar://problem/13107904>
wchar_t causes problem with certain compilers. Removing it for now.

llvm-svn: 173823
2013-01-29 20:03:58 +00:00
Enrico Granata 59de94bd4e Since an address (0x12346) is an expression, be brief.
llvm-svn: 173757
2013-01-29 02:46:04 +00:00
Enrico Granata b84a9dbf6b <rdar://problem/12552374>
Replacing the address argument type with address-expression in cases where StringToAddress() is used, and hence an expression can be passed where previously only a numeric address was allowed
This makes the documentation more clear and helps users discover that they can truly pass in an expression in these situations.

llvm-svn: 173753
2013-01-29 01:48:30 +00:00
Enrico Granata 9a31ccbad8 <rdar://problem/12890171>
Providing a compact display mode for "po" to use where the convenience variable name and the pointer value are both hidden.
This is for convenience when dealing with ObjC instances where the description often gets it right and the debugger-provided information is not useful to most people.
If you need either of these, "expr" will still show them.

llvm-svn: 173748
2013-01-29 01:35:01 +00:00
Greg Clayton 3c94737fb7 <rdar://problem/12524607>
Flush the process when symbols are loaded/unloaded manually. This was going on in:
- "target modules load" command
- SBTarget::SetSectionLoadAddress(...)
- SBTarget::ClearSectionLoadAddress(...)
- SBTarget::SetModuleLoadAddress(...)
- SBTarget::ClearModuleLoadAddress(...)

llvm-svn: 173745
2013-01-29 01:17:09 +00:00
Enrico Granata d7760bffda Describe the data formatters as part of the architecture
llvm-svn: 173734
2013-01-29 00:42:12 +00:00
Enrico Granata 3c8d169843 Adding a Makefile. Hopefully that will make the Linux buildbot happy
llvm-svn: 173732
2013-01-29 00:29:33 +00:00
Greg Clayton c96029e118 Fixed a "wchar_t" typo.
llvm-svn: 173731
2013-01-29 00:29:18 +00:00
Enrico Granata 5548cb50b2 <rdar://problem/12978143>
Data formatters now cache themselves.
This commit provides a new formatter cache mechanism. Upon resolving a formatter (summary or synthetic), LLDB remembers the resolution for later faster retrieval.
Also moved the data formatters subsystem from the core to its own group and folder for easier management, and done some code reorganization.
The ObjC runtime v1 now returns a class name if asked for the dynamic type of an object. This is required for formatters caching to work with the v1 runtime.
Lastly, this commit disposes of the old hack where ValueObjects had to remember whether they were queried for formatters with their static or dynamic type.
Now the ValueObjectDynamicValue class works well enough that we can use its dynamic value setting for the same purpose.

llvm-svn: 173728
2013-01-28 23:47:25 +00:00
Greg Clayton 5b2a789c6f Always define types from stdint.h so they are always available for use in expressions no matter what debug info you have. Types added are:
int8_t
uint8_t
int16_t
uint16_t
int32_t
uint32_t
int64_t
uint64_t
intptr_t
uintptr_t
size_t
ptrdiff_t
whar_t

llvm-svn: 173724
2013-01-28 22:31:43 +00:00
Greg Clayton ba7b8e2c8c Make sure that multi-line expressions don't create a default target. We recently switched to using a built-in m_exe_ctx when running commands in the DoExecute() so that we can have common code where commands can required having a valid target/process/thread/frame by specifying flags, this caused multi-line expression to always create a new dummy target because m_exe_ctx gets cleared when DoExecute exits. A new input reader has been pushed to handle the input for the expression, which will get popped off and then it was checking the target in m_exe_ctx (which was cleared).
llvm-svn: 173596
2013-01-26 23:54:29 +00:00
Jason Molenda ec2546ab97 One more change of a uint32_t variable to offset_t
to match Greg's dataextractor patch, this one in some
#if defined arm code.

llvm-svn: 173564
2013-01-26 07:06:09 +00:00
Jason Molenda 4eacc7647d Add comments showing the symbolic names for the exc_code types we
receive with an EXC_BREAKPOINT mach exception on arm.

llvm-svn: 173560
2013-01-26 05:30:38 +00:00
Jim Ingham 2995077d8a Add "target.process.stop-on-shared-library-events" setting, and make it work.
Add the ability to give breakpoints a "kind" string, and have the StopInfoBreakpoint
print that in the brief description if set.  Also print the kind - if set - in the breakpoint
listing.
Give kinds to a bunch of the internal breakpoints.
We were deleting the Mac OS X dynamic loader breakpoint as though the id we had stored away was
a breakpoint site ID, but in fact it was a breakpoint id, so we never actually deleted it.  Fixed that.

llvm-svn: 173555
2013-01-26 02:19:28 +00:00
Jim Ingham 9d8dd4bf52 Missing newline in a warning message.
llvm-svn: 173519
2013-01-25 23:05:01 +00:00
Daniel Malea 318cbcef91 Disable confirmation prompts for testing
- set auto-confirm to false when running TestExprs (avoid hang when using API)
- set prompt-on-quit to false in test helper (avoid timeout when using lldb CLI)

llvm-svn: 173485
2013-01-25 20:38:49 +00:00
Daniel Malea eb19a95322 Remove hardcoded -arch from lang/cpp testcase makefiles
- skip rdar12991846 (already marked expected-fail) to avoid introducing a i386 crash

llvm-svn: 173483
2013-01-25 20:33:59 +00:00
Greg Clayton e2a2222d53 Fix buildbot building errors.
llvm-svn: 173473
2013-01-25 19:40:54 +00:00
Daniel Malea d6a5531d42 Fix indenting typo in TestSTL.py
llvm-svn: 173470
2013-01-25 19:14:49 +00:00
Han Ming Ong 00a5799698 <rdar://13073234>
Get the number of threads correct.

llvm-svn: 173466
2013-01-25 18:32:24 +00:00
Greg Clayton c7bece56fa <rdar://problem/13069948>
Major fixed to allow reading files that are over 4GB. The main problems were that the DataExtractor was using 32 bit offsets as a data cursor, and since we mmap all of our object files we could run into cases where if we had a very large core file that was over 4GB, we were running into the 4GB boundary.

So I defined a new "lldb::offset_t" which should be used for all file offsets.

After making this change, I enabled warnings for data loss and for enexpected implicit conversions temporarily and found a ton of things that I fixed.

Any functions that take an index internally, should use "size_t" for any indexes and also should return "size_t" for any sizes of collections.

llvm-svn: 173463
2013-01-25 18:06:21 +00:00
Jason Molenda a71919c9d6 <rdar://problem/13072285>
Change the GDBRemoteRegisterContext::AddRegister function to take
its RegisterInfo argument by value instead of using a reference -
it will modify the object and modifying the contents of the 
g_register_infos table in GDBRemoteRegisterContext.cpp can cause a
crash the next time we step through it.

llvm-svn: 173406
2013-01-25 01:05:30 +00:00
Daniel Malea 2745d8467b Update test scripts and Makefiles to allow testing with GCC:
- introduce new variable ARCHFLAG in make/Makefile.rules to switch between "-arch" on Mac and "-m" everywhere else
- update testcase makefiles to use LD_EXTRAS instead of LDFLAGS (the former interacts with Makefile.rules badly)
- special treatment for gcc 4.6: replace "-std=c++11" with "-std=c++0x" as the former is not handled correctly
- remove hardcoded "-arch" from test Makefile

This patch should not have any effect on lldb on Mac OS X.

llvm-svn: 173402
2013-01-25 00:31:48 +00:00
Daniel Malea be230793fb Mark test cases affected by PR 15036 (GCC-generated DWARF causes parser crash)
- Add new decorator "@skipIfGcc" to lldbtest.py

llvm-svn: 173394
2013-01-24 23:52:09 +00:00
Jim Ingham d30df9e24c Don't listen for EXC_RESOURCE exceptions, those should really be handled by the system
handler.  Also put in string translations for a couple of exceptions we were missing.

llvm-svn: 173390
2013-01-24 23:33:19 +00:00
Daniel Malea db14eb25a0 Skip 32-bit testing of check_public_api_headers (on all platforms, not just Mac OS X)
- since the test program needs to link with LLDB, the test is invalid in 32-bit mode.

llvm-svn: 173372
2013-01-24 21:01:12 +00:00
Daniel Malea b8f80ee67f Marking test cases with @expectedFailureLinux as per recently opened bugs
- PR 15038: missing wide char support on Linux
- PR 14600 - Exception state registers not supported on Linux
- PR 15039: SBProcess.GetSTDOUT() returns an empty buffer
- PR 15037: stop-hooks sometimes fail to fire on Linux

llvm-svn: 173363
2013-01-24 19:47:06 +00:00
Daniel Malea cf7304a201 PR14426 (breakpoint hit count incorrect) is resolved.
llvm-svn: 173362
2013-01-24 19:35:57 +00:00