Enrico Granata
2265acf39e
Harden against the process pointer being null - this seems like it shouldn't happen, except it did - by a user stopping the debugger while the variables view was refreshing
...
Fixes rdar://19599357
llvm-svn: 227350
2015-01-28 19:23:51 +00:00
Enrico Granata
1cd5e921e1
Preparatory infrastructural work to support dynamically determining sizes of ObjC types via the runtime
...
This is necessary because the byte size of an ObjC class type is not reliably statically knowable (e.g. because superclasses sit deep in frameworks that we have no debug info for)
The lack of reliable size info is a problem when trying to freeze-dry an ObjC instance (not the pointer, the pointee)
This commit lays the foundation for having language runtimes help in figuring out byte sizes, and having ClangASTType ask for runtime help
No feature change as no runtime actually implements the logic, and nowhere is an ExecutionContext passed in yet
llvm-svn: 227274
2015-01-28 00:07:51 +00:00
Enrico Granata
5b8cacdb5f
Commit fix for a static analyzer issue where a string pointer could theoretically be NULL..
...
llvm-svn: 226366
2015-01-17 02:46:20 +00:00
Zachary Turner
225cc30afe
Change auto to size_t to fix warning.
...
Patch by Dan Sinclair
Differential Revision: http://reviews.llvm.org/D6899
llvm-svn: 225539
2015-01-09 20:15:03 +00:00
Andy Gibbs
3acfe1a3d9
Fix trivial signed/unsigned comparison warnings
...
llvm-svn: 224932
2014-12-29 13:03:19 +00:00
Enrico Granata
da04fbb535
We don't really handle printing embedded NULs in strings, but if we were to, we would need to have this logic inside the StringPrinter. So, add it.. For, you know, one day in the future where we might want to handle embedded NULs in strings...
...
llvm-svn: 224537
2014-12-18 19:43:29 +00:00
Enrico Granata
395939a483
Improve the performance of the libc++ std::map formatter. This is not the full solution to the slowness of this formatter, but it's a 5% improvement in our testcase performance, which I am not going to complain too hard about.
...
llvm-svn: 224373
2014-12-16 21:28:16 +00:00
Enrico Granata
dd6d24b253
Move a bunch of method implementations over to the C++ file; remove the need for a few includes. All in all, good stuff
...
llvm-svn: 224174
2014-12-13 02:07:50 +00:00
Keno Fischer
f4b170d0da
SyntheticChildrenFrontEnd::* should also be built when python is disabled
...
Summary:
This moves
- SyntheticChildrenFrontEnd::CreateValueObjectFromExpression
- SyntheticChildrenFrontEnd::CreateValueObjectFromAddress
- SyntheticChildrenFrontEnd::CreateValueObjectFromData
outside the `#ifndef LLDB_DISABLE_PYTHON` since it doesn't seem to depend on python being available and indeed breaks the build when python is disabled.
Reviewers: granata.enrico
Subscribers: lldb-commits
Differential Revision: http://reviews.llvm.org/D6646
llvm-svn: 224170
2014-12-13 00:05:58 +00:00
Enrico Granata
ff0f23dd41
Remove the last vestige of the world before data formatters :-)
...
Function pointers had a summary generated for them bypassing formatters, directly as part of the ValueObject subsystem
This patch transitions that code into a hardcoded summary
llvm-svn: 223906
2014-12-10 02:00:45 +00:00
Enrico Granata
e29df230cd
This patch does a few things:
...
- adds a new flag to mark ValueObjects as "synthetic children generated"
- vends new Create functions as part of the SyntheticChildrenFrontEnd that set the flag automatically
- moves synthetic child providers over to using these new functions
No visible feature change, but preparatory work for feature change
llvm-svn: 223819
2014-12-09 19:51:20 +00:00
Enrico Granata
7e4df56aae
Enable Python summaries to use custom SBTypeSummaryOptions if the user is so inclined. Updates to the webdoc will follow
...
llvm-svn: 222593
2014-11-22 00:02:47 +00:00
Enrico Granata
a126e462c2
Do some cleanup of DumpValueObjectOptions. The whole concept of raw printing was split between feature-specific flags, and an m_be_raw flag, which then drove some other changes in printing behavior. Clean that up, so that each functionality has its own flag .. oh, and make the bools all go in a bitfield since I may want to add more of those over time
...
llvm-svn: 222548
2014-11-21 18:47:26 +00:00
Enrico Granata
34042212b2
Add the ability for the NSString and libc++ std::string formatters to retrieve uncapped data
...
llvm-svn: 222277
2014-11-18 22:54:45 +00:00
Enrico Granata
099263b487
Fix a problem where the StringPrinter could be mistaking an empty string for a read error, and reporting spurious 'unable to read data' messages. rdar://19007243
...
llvm-svn: 222190
2014-11-17 23:14:11 +00:00
Enrico Granata
944547deab
Move a bunch of summary formatters to oneliner mode. This makes more cases eligible for oneline printing, and fixes rdar://18120906
...
llvm-svn: 221701
2014-11-11 19:52:12 +00:00
Shawn Best
8da0bf3b7c
LLGS Android target support - for Andy Chien : http://reviews.llvm.org/D6166
...
llvm-svn: 221570
2014-11-08 01:41:49 +00:00
Enrico Granata
52ab271878
This was meant to be count, not m_count
...
llvm-svn: 221541
2014-11-07 20:37:17 +00:00
Enrico Granata
f35bc63220
This is a large, but clearical, commit that enables the C++ formatters to take on the additional TypeSummaryOptions argument. It is still not used for anything, but it is now there. Adding support for this extra argument to Python formatters will follow suit
...
llvm-svn: 221486
2014-11-06 21:55:30 +00:00
Enrico Granata
c1247f5596
Introduce the notion of "type summary options" as flags that can be passed down to individual summary formatters to alter their behavior in a formatter-dependent way
...
Two flags are introduced:
- preferred display language (as in, ObjC vs. C++)
- summary capping (as in, should a limit be put to the amount of data retrieved)
The meaning - if any - of these options is for individual formatters to establish
The topic of a subsequent commit will be to actually wire these through to individual data formatters
llvm-svn: 221482
2014-11-06 21:23:20 +00:00
Enrico Granata
ebdc1ac014
Add a setting escape-non-printables that drives whether the StringPrinter should or should not escape sequences such as \t, \n, .. and generally any non-printing character
...
The recent StringPrinter changes made this behavior the default, and the setting defaults to yes
If you want to change this behavior and see non-printables unescaped (e.g. "a\tb" as "a b"), set it to false
Fixes rdar://12969594
llvm-svn: 221399
2014-11-05 21:20:48 +00:00
Shawn Best
fd13743f57
for Siva Chandra: Fix compilation of StringPrinter.cpp with GCC. Differential Revision: http://reviews.llvm.org/D6122
...
llvm-svn: 221310
2014-11-04 22:43:34 +00:00
Zachary Turner
c19cf1d424
Remove #include <codecvt>. It isn't supported on all compilers.
...
Also it wasn't being used anyway, so it appears to be a dead include.
llvm-svn: 220921
2014-10-30 19:42:08 +00:00
Enrico Granata
2206b48d6d
Also port the C string reading code in ValueObject over to using StringPrinter API
...
llvm-svn: 220917
2014-10-30 18:27:31 +00:00
Ed Maste
236a5bc619
Fix CMake build, adding StringPrinter.cpp from r220894
...
llvm-svn: 220909
2014-10-30 14:50:42 +00:00
Enrico Granata
ca6c8ee23b
Start adopting the StringPrinter API. The StringPrinter API is the new blessed way of printing strings that supports escaping non-printables, and has better handling of different UTF encodings
...
llvm-svn: 220894
2014-10-30 01:45:39 +00:00
Enrico Granata
76b08d584b
Fix the NSPathStore2 data formatter to actually handle the explicit length stored inside the object. The meat of this commit, however, is a nice little API for easily adding new __lldb_autogen_ helper types to an AST context
...
llvm-svn: 220881
2014-10-29 23:08:02 +00:00
Enrico Granata
b6d7cba141
Shuffle a couple of formatters around. This should fix the bug that never dies, aka rdar://15154623
...
llvm-svn: 220836
2014-10-29 01:03:09 +00:00
Enrico Granata
6714a0fd09
More cleanup of the CXXFormatterFunctions header
...
llvm-svn: 220433
2014-10-22 21:47:27 +00:00
Zachary Turner
b5c4971a4c
Fix CMake build broken after r220421.
...
llvm-svn: 220430
2014-10-22 21:18:29 +00:00
Enrico Granata
e85fe3a4d1
Reorganize some of the data formatters code to simplify CXXFormattersFunction.h. Also, add a synthetic child provider for libc++'s version of std::initializer_list<T>
...
llvm-svn: 220421
2014-10-22 20:34:38 +00:00
Enrico Granata
622be238eb
Expose the type-info flags at the public API layer. These flags provide much more informational content to consumers of the LLDB API than the existing TypeClass. Part of the fix for rdar://18517593
...
llvm-svn: 220322
2014-10-21 20:52:14 +00:00
Eric Christopher
098f898fd2
Move anonymous types declared in an anonymous union to
...
outside the anonymous union as it's a language extension
we don't normally support.
llvm-svn: 220320
2014-10-21 20:39:34 +00:00
Enrico Granata
0e478f5aa3
Make a general helper function on the AST context to retrieve a type by identifier in the fashion needed by data formatters
...
llvm-svn: 220059
2014-10-17 17:56:59 +00:00
Enrico Granata
8d9c2da2d1
Rework this code so that it does not trigger a compiler warning. NFC
...
llvm-svn: 219964
2014-10-16 21:18:58 +00:00
Jason Molenda
665f12a870
Remove unreachable code.
...
llvm-svn: 219911
2014-10-16 08:05:22 +00:00
Enrico Granata
de4de39c9d
This should keep the non-Xcode-based builds happy
...
llvm-svn: 219853
2014-10-15 21:39:17 +00:00
Enrico Granata
5510a5762c
Add synthetic children support for NSIndexPath
...
llvm-svn: 219852
2014-10-15 21:38:32 +00:00
Enrico Granata
db2ecad3cd
The NSDate formatter should use GMT instead of the local timezone. Fixes rdar://13416848
...
llvm-svn: 219841
2014-10-15 20:18:58 +00:00
Enrico Granata
6030e04591
Enhance the libc++ list data formatter so that it does not start looking for loops until asked to actually fetch children. Also, if you're going to read child X, only look for a loop in the first X nodes. Loops further down the road won't really matter. This should speed things up for large lists and fix rdar://18583790
...
llvm-svn: 219447
2014-10-09 21:56:30 +00:00
Enrico Granata
ddac7611ee
If a ValueObject has a child that vends synthetic children, but only does so to generate a value for itself, that's not a disqualifier from one-line printing. Also, fetch synthetic values if available and requested for children as well while printing them
...
llvm-svn: 219427
2014-10-09 18:47:36 +00:00
Enrico Granata
d07cfd3ae4
Extend synthetic children to produce synthetic values (as in, those that GetValueAsUnsigned(), GetValueAsCString() would return)
...
The way to do this is to write a synthetic child provider for your type, and have it vend the (optional) get_value function.
If get_value is defined, and it returns a valid SBValue, that SBValue's value (as in lldb_private::Value) will be used as the synthetic ValueObject's Value
The rationale for doing things this way is twofold:
- there are many possible ways to define a "value" (SBData, a Python number, ...) but SBValue seems general enough as a thing that stores a "value", so we just trade values that way and that keeps our currency trivial
- we could introduce a new level of layering (ValueObjectSyntheticValue), a new kind of formatter (synthetic value producer), but that would complicate the model (can I have a dynamic with no synthetic children but synthetic value? synthetic value with synthetic children but no dynamic?), and I really couldn't see much benefit to be reaped from this added complexity in the matrix
On the other hand, just defining a synthetic child provider with a get_value but returning no actual children is easy enough that it's not a significant road-block to adoption of this feature
Comes with a test case
llvm-svn: 219330
2014-10-08 18:27:36 +00:00
Enrico Granata
29551955a9
The type category enable * was implemented assuming a previous disable * had happened. While that will most likely be true in practice, the consequences of this not being the case will be a crash. I fix the crash by doing two things: 1) don't let already-enabled categories be enabled anyway; 2) if a category were disabled but with a bogus last-enabled position - highly highly unlikely - just put it in the first empty slot. I am not so sure 2) is bulletproof perfect, but I also don't think 2) will practically ever happen
...
llvm-svn: 219245
2014-10-07 22:15:27 +00:00
Enrico Granata
29ba63d336
Stop enabling the std::vector<bool> data formatter for libstdc++, and for that matter, also skip running the test on Darwin. libstdc++ is more relevant on non-Apple platforms
...
llvm-svn: 218952
2014-10-03 01:54:10 +00:00
Enrico Granata
e7687adc60
Issuing a "type category disable *" command followed by a "type category enable *" command does not honor the order in which categories were previously enabled
...
While we didn't really promise it would, it seems like it should
This checkin enables just that, and fixes rdar://18527468
llvm-svn: 218949
2014-10-03 01:48:32 +00:00
Enrico Granata
ba4b788ae7
Unused functions break the -Werror build. Revert for now.
...
llvm-svn: 217900
2014-09-16 20:28:26 +00:00
Enrico Granata
438aba6fdd
Add a convenience function to FormatManager to setup an empty filter (one that suppresses all children, that is)
...
llvm-svn: 217891
2014-09-16 17:41:54 +00:00
Jason Molenda
e6481c7e0f
Fix the ctor ivar initialization formatting for Debugger,
...
TypeValidatorImpl, FileAction, and ProcessLaunchInfo to match the
lldb coding convention.
llvm-svn: 217653
2014-09-12 01:50:46 +00:00
Enrico Granata
340fa53411
Recent builds of libcxx actually wrap an std::map's children values in a union containing either a member named __cc, or either of __cc and __nc (const vs. non-const). This level of wrapping is quite useless for LLDB to show to people, so try to detect it, and filter it out
...
llvm-svn: 217651
2014-09-12 00:55:37 +00:00
Enrico Granata
42fa4af8fe
When deciding if one-liner printing applies, and you find a summary, the summary is a good candidate to ask. While in theory one could want one-liner printing with a non-one-liner summary, I don't see LLDB as the best place to solve such inner conflicts
...
llvm-svn: 217641
2014-09-11 23:00:27 +00:00