History log of /external/lldb/source/Symbol/ClangASTContext.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
1e68e88fd56c6a617058cb5807042587724b5db9 12-Jul-2013 Greg Clayton <gclayton@apple.com> Unblock buildbot.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@186133 91177308-0d34-0410-b5e6-96231b3b80d8
52f792329be5db8e38961350589e97e8f2823acd 12-Jul-2013 Greg Clayton <gclayton@apple.com> Huge change to clean up types.

A long time ago we start with clang types that were created by the symbol files and there were many functions in lldb_private::ClangASTContext that helped. Later we create ClangASTType which contains a clang::ASTContext and an opauque QualType, but we didn't switch over to fully using it. There were a lot of places where we would pass around a raw clang_type_t and also pass along a clang::ASTContext separately. This left room for error.

This checkin change all type code over to use ClangASTType everywhere and I cleaned up the interfaces quite a bit. Any code that was in ClangASTContext that was type related, was moved over into ClangASTType. All code that used these types was switched over to use all of the new goodness.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@186130 91177308-0d34-0410-b5e6-96231b3b80d8
2f3daef19e4653c075ffcf16a2eb2e64d0380001 28-Jun-2013 Greg Clayton <gclayton@apple.com> Default parameters are evil and should not be used. Case and point this checkin that fixes implicit conversions that were happening.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@185217 91177308-0d34-0410-b5e6-96231b3b80d8
0a5dfb9a528ece2c3e15eedaebf7f49b4f6f1ae7 20-Jun-2013 Greg Clayton <gclayton@apple.com> Fixed a crasher that I encountered when looking up a virtual base class offset.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@184390 91177308-0d34-0410-b5e6-96231b3b80d8
3e11c7ec050648ba865f1d451f8cb46fd39072a8 19-Jun-2013 Andy Gibbs <andyg1001@hotmail.co.uk> Sort out a number of mismatched integer types in order to cut down the number of compiler warnings.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@184333 91177308-0d34-0410-b5e6-96231b3b80d8
b267bbd4df154a360bdb5ac0aedc5d2503740f9d 19-Jun-2013 Enrico Granata <egranata@apple.com> <rdar://problem/14194140>

Adding support for correctly extracting children out of vector types for data formatter purposes

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@184262 91177308-0d34-0410-b5e6-96231b3b80d8
8c3391ba76c5e3440a0cc10296dbde1b44300509 19-Jun-2013 Enrico Granata <egranata@apple.com> <rdar://problem/14194128>

ClangASTContext was failing to retrieve fields and base class info for ObjC variables
This checkin fixes that and adds a test case

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@184248 91177308-0d34-0410-b5e6-96231b3b80d8
a9dc882693ef65ee3657b96f018fec3685d37282 11-Jun-2013 Greg Clayton <gclayton@apple.com> Use llvm::APFloat for formatting if a target is available. Each target when debugging has a "ASTContext" that helps us to use the correct floating point semantics. Now that APFloat supports toString we now use that. If we don't have a target, we still fall back on the old display methodology, but the important formatting should always have a target available and thus use the compiler floating point code.

Modified the test programs to use floating point constants that always will display correctly. We had some numbers that were being rounded, and now that we are using clang, we no longer round them and we get more correct results.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@183792 91177308-0d34-0410-b5e6-96231b3b80d8
efc7e55e58ee54ffda4b8d95add7918291236e80 02-May-2013 Enrico Granata <egranata@apple.com> <rdar://problem/13338477>

clang sugarcoats expressions of the sort *(int (*)[3])foo where foo is an int* saying that their type class is Paren
This checkin updates our lookup tables to properly desugar Paren into the actual type of interest

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@180938 91177308-0d34-0410-b5e6-96231b3b80d8
bb53fe5b67c9f5d9ee7ad278913f8d2c65bdde02 02-May-2013 Sean Callanan <scallanan@apple.com> Make our eliding of artificially-generated methods
in debug information more aggressive. Emitting
classes containing these methods causes crashes in
Clang when dealing with complex code bases.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@180895 91177308-0d34-0410-b5e6-96231b3b80d8
f62ba43d6ce64bd3aee100f86c775784f94149dd 01-May-2013 Greg Clayton <gclayton@apple.com> <rdar://problem/13776113>

Dynamic type resolution not working for typedef's such as the __ptr_ member in the C++11 std::shared_ptr.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@180818 91177308-0d34-0410-b5e6-96231b3b80d8
756bed4c6e6c58bf9ba7bc7bb40065b9c394a426 30-Apr-2013 Sean Callanan <scallanan@apple.com> Fixed completion of incomplete array types, fixing
an assertion if we attempted to get the size of one.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@180763 91177308-0d34-0410-b5e6-96231b3b80d8
764bca576e78c9bbfb01894cc4d96e96830c77f1 24-Apr-2013 Greg Clayton <gclayton@apple.com> <rdar://problem/13298695>

Fixed LLDB to be able to correctly parse template parameters that have no name and no type. This can be triggered by the following LLVM/Clang code:

template <typename T, typename = void>
class SmallVectorTemplateCommon : public SmallVectorBase {

The “typename = void” was emitting DWARF with an empty DW_AT_name and no DW_AT_type. We now correctly infer that no DW_AT_type means “void” and that an empty name is ok.

This means you can now call functions on things that inherit from SmallVectorTemplateCommon.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@180155 91177308-0d34-0410-b5e6-96231b3b80d8
4cdf70573e36822242d131c10f6317d945c044e6 17-Apr-2013 Ashok Thirumurthi <ashok.thirumurthi@intel.com> Fix for regression in TestCPPStaticMethods.py due to refactoring in clang.
- Specify SC_Static given DIE attributes for static methods and operators.

Thanks to Wei Pan for his review and the help with root-causing.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@179727 91177308-0d34-0410-b5e6-96231b3b80d8
3525576f2cddc2a7b82b2bec3fd885ef6b1b5a52 11-Apr-2013 Greg Clayton <gclayton@apple.com> Static variables inside classes were not being added to the RecordDecl, now they are. This gets us closer to being able to display static variables in classes.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@179296 91177308-0d34-0410-b5e6-96231b3b80d8
f95fc9e09fa0a32de0a3904a1517266df37e8bff 06-Apr-2013 Greg Clayton <gclayton@apple.com> Added support "__attribute__((__vector_size__(B)))" and "__attribute__((ext_vector_type(N)))".

Now we can:
1 - see the return value for functions that return types that use the "ext_vector_size"
2 - dump values that use the vector attributes ("expr $ymm0")
3 - modified the DWARF parser to correctly parse GNU vector types from the DWARF by turning them into clang::Type::ExtVector types instead of just standard arrays

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@178924 91177308-0d34-0410-b5e6-96231b3b80d8
edb83a59994efc8fe9f942f976dc355b74178f5a 03-Apr-2013 Rafael Espindola <rafael.espindola@gmail.com> Fix build.
This should fix the build breakage caused by the api change in 178663.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@178700 91177308-0d34-0410-b5e6-96231b3b80d8
f85902c1ccc95b6e97b6d818243047992f79c4f3 30-Mar-2013 Sean Callanan <scallanan@apple.com> Elide all artificial copy constructors, because
they are probably trivial. This means that we
don't confuse Clang about whether a class is
trivially copy constructible. It can figure
that out itself as long as we don't explicitly
feed it the constructors.

If the class is trivially copy-constructible,
this can change the ABI that Clang uses to call
functions that return that class (e.g., by making
the object be returned in a register), so this
is quite important for correctness.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@178411 91177308-0d34-0410-b5e6-96231b3b80d8
952e9dc874944fcdbbb224f3ec4fc2c859376f64 28-Mar-2013 Greg Clayton <gclayton@apple.com> <rdar://problem/13521159>

LLDB is crashing when logging is enabled from lldb-perf-clang. This has to do with the global destructor chain as the process and its threads are being torn down.

All logging channels now make one and only one instance that is kept in a global pointer which is never freed. This guarantees that logging can correctly continue as the process tears itself down.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@178191 91177308-0d34-0410-b5e6-96231b3b80d8
017c16aa483e6edabdbbee1bdcd1ce3f8e8a12d1 27-Mar-2013 Greg Clayton <gclayton@apple.com> Don't use a "uintptr_t" for the metadata key, use a "void *". This removes all of the casts that were being used and cleans the code up a bit. Also added the ability to dump the metadata.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@178113 91177308-0d34-0410-b5e6-96231b3b80d8
3dc2a5b732ae161b8ae51d376a8f0060a7d9e2a8 20-Mar-2013 Enrico Granata <egranata@apple.com> Cleanup to the ObjC runtime to remove the now useless ClassDescriptor_Invalid

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@177558 91177308-0d34-0410-b5e6-96231b3b80d8
cc5d27417b9f958d596a438290a9adb17674b487 19-Mar-2013 Enrico Granata <egranata@apple.com> The formatters for std::shared_ptr, std::weak_ptr, std::list, std::vector and std::map as provided by libc++ are now written in C++ instead of Python
std::deque is still in Python but is much less commonly used

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@177454 91177308-0d34-0410-b5e6-96231b3b80d8
a924b19df4a1b41206839e275383c0f43a4c5940 16-Mar-2013 Enrico Granata <egranata@apple.com> Performance improvements to the IsObjCNil () - we only try to resolve the value if the variable under consideration truly is an “Objective-C thing”
This also changes the ClangASTContext to make sure that id is correctly marked as being such an ObjC thing

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@177203 91177308-0d34-0410-b5e6-96231b3b80d8
fe6dc6e241c52822710380cec0931351a1d7b2d3 14-Mar-2013 Greg Clayton <gclayton@apple.com> <rdar://problem/13421412>

Many "byte size" members and variables were using a mixture of uint32_t and size_t. Switching over to using uint64_t everywhere.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@177091 91177308-0d34-0410-b5e6-96231b3b80d8
d9c7d40d73a47581ed3ca06eb7282dc7a353b46e 12-Mar-2013 Sean Callanan <scallanan@apple.com> Switch from CreateTypeSourceInfo, which allocates
uninitialized memory, to getTrivialTypeSourceInfo,
which initializes its memory, when creating trivial


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@176899 91177308-0d34-0410-b5e6-96231b3b80d8
62afa499c760c9073ae7854a9da06218b034b866 09-Mar-2013 Sean Callanan <scallanan@apple.com> Made LLDB work with the latest Clang. Also fixed
an assertion due to non-implicit Objective-C methods
without source locations.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@176750 91177308-0d34-0410-b5e6-96231b3b80d8
be38b451f26afc304618f4330d936298ed904ea9 08-Mar-2013 Greg Clayton <gclayton@apple.com> <rdar://problem/13374267>

Fixed error where objective C methods with selectors names starting with ".cxx_" where causing errors for ARC built binaries.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@176683 91177308-0d34-0410-b5e6-96231b3b80d8
9c09181404cc35f65d5353231246959135fb7684 08-Mar-2013 Greg Clayton <gclayton@apple.com> <rdar://problem/13119621>

Make dynamic type detection faster by using the AST metadata to help out and allow us not to complete types when we don't need to.

After running "purge" on a MacOSX system, the Xcode variables view now populates more than 3x faster with this fix.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@176676 91177308-0d34-0410-b5e6-96231b3b80d8
d5e48bd4029b47cd298fd065429bb3a350a08324 06-Mar-2013 Greg Clayton <gclayton@apple.com> <rdar://problem/13341472>

LLDB wasn't printing the names for negative enums. Fixed the signed extraction of enumerators and how they were registered with clang's type system.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@176533 91177308-0d34-0410-b5e6-96231b3b80d8
874378dfa01edbc46818ed1be1a2de2950ff984f 19-Feb-2013 Sean Callanan <scallanan@apple.com> Updated to support latest Clang option naming.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@175546 91177308-0d34-0410-b5e6-96231b3b80d8
c113056f1c3cd889d772231aabd10fa99b6d4754 13-Feb-2013 Greg Clayton <gclayton@apple.com> Quiet "the missing case in switch statement" warnings from newer clang builds.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@175061 91177308-0d34-0410-b5e6-96231b3b80d8
4a58456ee1ac2b38f7e11dc04760f86afd2d80ca 07-Feb-2013 Sean Callanan <scallanan@apple.com> Fixed a problem that would cause LLDB to crash
if it encountered bad debug information. This
debug information had an Objective-C method whose
selector disagreed with the true number of arguments
to that method.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@174557 91177308-0d34-0410-b5e6-96231b3b80d8
dbf2fb0d760631d86ab93cc70c3bb05a4c514263 01-Feb-2013 Sean Callanan <scallanan@apple.com> 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


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.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@174153 91177308-0d34-0410-b5e6-96231b3b80d8
d0250856d5e33dcb5c60f8dcd3a5b88860608b50 01-Feb-2013 Greg Clayton <gclayton@apple.com> Get rid for switch statement warning for unhandled cases.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@174128 91177308-0d34-0410-b5e6-96231b3b80d8
36da2aa6dc5ad9994b638ed09eb81c44cc05540b 25-Jan-2013 Greg Clayton <gclayton@apple.com> <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.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@173463 91177308-0d34-0410-b5e6-96231b3b80d8
63d67ed225f948484a73db65c3c2512211515f06 10-Jan-2013 Enrico Granata <egranata@apple.com> <rdar://problem/11146929>

Enabling support for the wchar_t type.
Without the proper language option setup, clang's ASTContexts will be configured to have wchar_t == int
This patch enables the correct options to make sure that we report wchar_t as itself
Added a test case to make sure we do not regress

Adding files missing from the previous commit

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@172039 91177308-0d34-0410-b5e6-96231b3b80d8
19b646725e7d6bebda787fa3cb55ff223a00d907 04-Jan-2013 Greg Clayton <gclayton@apple.com> <rdar://problem/12928282>

Added SBTarget::EvaluateExpression() so expressions can be evaluated without needing a process.

Also fixed many functions that deal with clang AST types to be able to properly handle the clang::Type::Elaborated types ("struct foo", "class bar").

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@171476 91177308-0d34-0410-b5e6-96231b3b80d8
c6fe581c95790f7beeda8c6fd7c8ea4b14ab95f3 02-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Update to reflect API changes in r171367.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@171381 91177308-0d34-0410-b5e6-96231b3b80d8
ca8fb173fa66d9c93e02c4abfd4627c143795653 21-Dec-2012 Sean Callanan <scallanan@apple.com> Made LLDB compile with LLVM top-of-tree again.
The results from Clang name lookups changed to
be ArrayRefs, so I had to change the way we
check for the presence of a result and the way
we iterate across results.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@170927 91177308-0d34-0410-b5e6-96231b3b80d8
d35b7b3bfd21f4fd6b048693563eef1b772ae197 07-Dec-2012 Daniel Malea <daniel.malea@intel.com> More Linux warnings fixes (remove default labels as needed):
- as per http://llvm.org/docs/CodingStandards.html#don-t-use-default-labels-in-fully-covered-switches-over-enumerations

Patch by Matt Kopec!

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@169633 91177308-0d34-0410-b5e6-96231b3b80d8
b912457e1eb6f97d3ee3adc74d1e0f6393e35d3c 06-Dec-2012 Greg Clayton <gclayton@apple.com> <rdar://problem/12560257>

Fixed zero sized arrays to work correctly. This will only happen once we get a clang that emits correct debug info for zero sized arrays. For now I have marked the TestStructTypes.py as an expected failure.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@169465 91177308-0d34-0410-b5e6-96231b3b80d8
803c3b042f19c9238825f4900a45676e1a2957f4 03-Dec-2012 Greg Clayton <gclayton@apple.com> Fix clang build issues.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@169140 91177308-0d34-0410-b5e6-96231b3b80d8
b4faddef92927f6c3aa6b127b94e8763465d4563 16-Nov-2012 Greg Clayton <gclayton@apple.com> Fix lldb to compile with top of tree LLVM/clang.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@168204 91177308-0d34-0410-b5e6-96231b3b80d8
9bb15b62769166095721c42396cd59c240485a20 12-Nov-2012 Filipe Cabecinhas <me@filcab.net> s/BCPLComment/LineComment/ (llvm r167690)

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@167751 91177308-0d34-0410-b5e6-96231b3b80d8
f270fa9682d748c1be1aea1993fd8d2408639f4c 06-Nov-2012 Greg Clayton <gclayton@apple.com> <rdar://problem/12582031>

Unnamed bitfields cause struct layout problems

Synthesize unnamed bitfields when required. Most compilers don't mention unnamed bitfields in the DWARF, so we need to create them to keep clang happy with the types we create from the DWARF. We currently can't do this for ObjC since the DW_AT_bit_offset value for any direct ivars of ObjC classes as the values for these attributes are bogus. A bug has been filed on Clang to fix this, and another bug has been filed on LLDB to make sure we fix the DWARF parser once the clang fix is in by looking the the DW_AT_producer in the compile unit attributes and finding the compiler version and only enabling it for newer versions of clang.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@167424 91177308-0d34-0410-b5e6-96231b3b80d8
a32c5a5aa1fec0f9bc2a5b123f07ff6b8c979999 27-Oct-2012 Jim Ingham <jingham@apple.com> This is the first phase of supporting the DW_AT_object_pointer tag. I expanded the decl metadata
so it could hold this information, and then used it to look up unfound names in the object pointer
if it exists. This gets "frame var" to work for unqualified references to ivars captured in blocks.
But the expression parser is ignoring this information still.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@166860 91177308-0d34-0410-b5e6-96231b3b80d8
cbe707cf259561da16ecfd94acbd4323103036c1 25-Oct-2012 Sean Callanan <scallanan@apple.com> Updated LLDB's use of the DiagnosticsEngine to
reflect a change to the initializer.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@166657 91177308-0d34-0410-b5e6-96231b3b80d8
6a97d425a9bb1a137a7dcf7be90edd37d21f4dbb 18-Oct-2012 Sean Callanan <scallanan@apple.com> Fixed ClangASTContext to own its TargetOptions
using a reference-counted pointer. This avoids
memory-management problems when the TargetOptions
are deleted.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@166132 91177308-0d34-0410-b5e6-96231b3b80d8
12f1d1e9290354800560b882a5313231ff2ba58f 15-Oct-2012 Greg Clayton <gclayton@apple.com> Fixed a logic error that showed up when compiling with a newer version of clang where:

ClangASTContext::GetLLDBBasicTypeEnumeration (clang_type_t clang_type)

would return a bogus value.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@165979 91177308-0d34-0410-b5e6-96231b3b80d8
949b7178cf48cc4cf8533c729999a6c90785773d 13-Oct-2012 Greg Clayton <gclayton@apple.com> <rdar://problem/12490588>

From SBType, we can now get a lldb::BasicType enumeration out of an existing type.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@165857 91177308-0d34-0410-b5e6-96231b3b80d8
58146a9db1ab1833ee82449410acbc7c63ef865c 05-Oct-2012 Jim Ingham <jingham@apple.com> ClangASTContext::GetIndexOfChildWithName - increment the child index we plan to return as we iterate through the ivars.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@165264 91177308-0d34-0410-b5e6-96231b3b80d8
06dc17f8eb821d7256fd42e56f85c2779a29f689 25-Sep-2012 Sean Callanan <scallanan@apple.com> Brought LLDB top-of-tree into sync with LLVM/Clang
top-of-tree. Removed all local patches and llvm.zip.

The intent is that fron now on top-of-tree will
always build against LLVM/Clang top-of-tree, and
that problems building will be resolved as they
occur. Stable release branches of LLDB can be
constructed as needed and linked to specific release
branches of LLVM/Clang.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@164563 91177308-0d34-0410-b5e6-96231b3b80d8
851e30ec6a1b1d2c154bb7d69ed0d05b5fd14705 18-Sep-2012 Greg Clayton <gclayton@apple.com> Stop using the "%z" size_t modifier and cast all size_t values to uint64_t. Some platforms don't support this modification.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@164148 91177308-0d34-0410-b5e6-96231b3b80d8
6218201f7b1ce8b9c2049aa82770364410663307 08-Sep-2012 Sean Callanan <scallanan@apple.com> Fixed a crash in the testsuite because the wrong
type was being completed.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@163440 91177308-0d34-0410-b5e6-96231b3b80d8
9b90e87380cfafd7e746252588c314bcfefa4fe4 31-Aug-2012 Greg Clayton <gclayton@apple.com> <rdar://problem/12202862>

Added a fix for incorrect dynamic typing. Before when asking if a C++ class could be dynamic, we would answer yes for incomplete C++ classes. This turned out to have issues where if a class was not virtual, yet had its first ivar be an instance of a virtual class, we would incorrectly say that a class was virtual and we would downcast it to be a pointer to the first ivar. We now ask the class to complete itself prior to answering the question. We need to test the effects on memory of this change prior to submission. It is the safest and best fix, but it does have a potential downside of higher memory consumption.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@163014 91177308-0d34-0410-b5e6-96231b3b80d8
f6132ef983e8a5b98fbe5e184f5128eff8c04730 01-Aug-2012 Greg Clayton <gclayton@apple.com> <rdar://problem/11275622>

Added new API to lldb::SBTypeMember for bitfields:

bool SBTypeMember::IsBitfield();
uint32_t SBTypeMember::GetBitfieldSizeInBits();

Also added new properties for easy access. Now SBTypeMember objects in python have a "fields" property for all type fields, "bases" for all direct bases, "vbases" for all virtual base classes and "members" for a combo of all three organized by bit offset. They all return a python list() of SBTypeMember objects. Usage:
(lldb) script
>>> t = lldb.target.FindFirstType("my_type")
>>> for field in t.fields:
... print field
>>> for vbase in t.vbases:
... print vbase
>>> for base in t.bases:
... print base
>>> for member in t.members:
... print member

Also added new "is_bitfield" property to the SBTypeMember objects that will return the result of SBTypeMember::IsBitfield(), and "bitfield_bit_size" which will return the result of SBTypeMember::GetBitfieldSizeInBits();

I also fixed "SBTypeMember::GetOffsetInBytes()" to return the correct byte offset.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@161091 91177308-0d34-0410-b5e6-96231b3b80d8
4a379b1194f3e6b308cd6e80b45d6ca5dd0aafd7 17-Jul-2012 Greg Clayton <gclayton@apple.com> Ran the static analyzer on the codebase and found a few things.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@160338 91177308-0d34-0410-b5e6-96231b3b80d8
b3a1a2bba41281ba56a99fe64887a8a04760784c 14-Jul-2012 Greg Clayton <gclayton@apple.com> <rdar://problem/11870357>

Allow "frame variable" to find ivars without the need for "this->" or "self->".

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@160211 91177308-0d34-0410-b5e6-96231b3b80d8
e9fcfd94bbd6e188c0f5291eb444ed3c464342ca 13-Jul-2012 Sean Callanan <scallanan@apple.com> Updated LLVM and added a fix to LLDB which allows
LLDB to distinguish between multiple anonymous
structs/unions in the same class.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@160186 91177308-0d34-0410-b5e6-96231b3b80d8
b170aee2daacc83e3d71c3e3acc9d56c89893a7b 08-May-2012 Greg Clayton <gclayton@apple.com> <rdar://problem/11358639>

Switch over to the "*-apple-macosx" for desktop and "*-apple-ios" for iOS triples.

Also make the selection process for auto selecting platforms based off of an arch much better.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@156354 91177308-0d34-0410-b5e6-96231b3b80d8
a4974db9b26cc4f33e16c990304b51f4a1d38611 18-Apr-2012 Sean Callanan <scallanan@apple.com> We now record metadata for Objective-C interfaces,
Objective-C methods, and Objective-C properties.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@154972 91177308-0d34-0410-b5e6-96231b3b80d8
fafffe000eb4a3902ecefc82446d11e6838167c6 13-Apr-2012 Sean Callanan <scallanan@apple.com> Added a mechanism for keeping track of where in
the debug information individual Decls came from.

We've had a metadata infrastructure for a while,
which was intended to solve a problem we've since
dealt with in a different way. (It was meant to
keep track of which definition of an Objective-C
class was the "true" definition, but we now find
it by searching the symbols for the class symbol.)
The metadata is attached to the ExternalASTSource,
which means it has a one-to-one correspondence with
AST contexts.

I've repurposed the metadata infrastructure to
hold the object file and DIE offset for the DWARF
information corresponding to a Decl. There are
methods in ClangASTContext that get and set this
metadata, and the ClangASTImporter is capable of
tracking down the metadata for Decls that have been
copied out of the debug information into the
parser's AST context without using any additional

To see the metadata, you just have to enable the
expression log:
(lldb) log enable lldb expr
and watch the import messages. The high 32 bits
of the metadata indicate the index of the object
file in its containing DWARFDebugMap; I have also
added a log which you can use to track that mapping:
(lldb) log enable dwarf map

This adds 64 bits per Decl, which in my testing
hasn't turned out to be very much (debugging Clang
produces around 6500 Decls in my tests). To track
how much data is being consumed, I've also added a
global variable g_TotalSizeOfMetadata which tracks
the total number of Decls that have metadata in all
active AST contexts.

Right now this metadata is enormously useful for
tracking down bugs in the debug info parser. In the
future I also want to use this information to provide
more intelligent error messages instead of printing
empty source lines wherever Clang refers to the
location where something is defined.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@154634 91177308-0d34-0410-b5e6-96231b3b80d8
e2f71a33fa5ffdd3829d0c2c2a6790387743d064 06-Apr-2012 Greg Clayton <gclayton@apple.com> Check if the two clang opaque type pointers are equal before doing anything more exhaustive comparison.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@154181 91177308-0d34-0410-b5e6-96231b3b80d8
8d6115615f55ae38ff141f0a6859d59750da8d02 05-Apr-2012 Sean Callanan <scallanan@apple.com> Fixed a problem where we did not read properties
correctly if the setter/getter were not present
in the debug information. The fixes are as follows:

- We not only look for the method by its full name,
but also look for automatically-generated methods
when searching for a selector in an Objective-C
interface. This is necessary to find accessors.

- Extract the getter and setter name from the
DW_TAG_APPLE_Property declaration in the DWARF
if they are present; generate them if not.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@154067 91177308-0d34-0410-b5e6-96231b3b80d8
ab6e67a36a396cbf30a6f965ee5acee4d637041b 03-Apr-2012 Bill Wendling <isanbard@gmail.com> Possibly too soon for this change.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@153944 91177308-0d34-0410-b5e6-96231b3b80d8
36b6b4ced93d345eb506cd99f39e3b8c79aee6ea 03-Apr-2012 Bill Wendling <isanbard@gmail.com> The option is 'NoInlineDefine.'

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@153942 91177308-0d34-0410-b5e6-96231b3b80d8
e4b3d6351171505f612ebb2d78ed15f348081845 03-Apr-2012 Sean Callanan <scallanan@apple.com> Fixed ClangASTContext to correctly recognize
wchar_t as distinct from int.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@153920 91177308-0d34-0410-b5e6-96231b3b80d8
c17d2ed5fe752c912fb6bb4563f2c1639c8e6ce9 31-Mar-2012 Greg Clayton <gclayton@apple.com> Remove unused code.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@153786 91177308-0d34-0410-b5e6-96231b3b80d8
3356d4f89e85301e5ddec2301c75b0626d50703f 30-Mar-2012 Greg Clayton <gclayton@apple.com> <rdar://problem/11082392>

Fixed an issue that could cause circular type parsing that will assert and kill LLDB.

Prior to this fix the DWARF parser would always create class types and not start their definitions (for both C++ and ObjC classes) until we were asked to complete the class later. When we had cases like:

class A
class B

We would alway try to complete A before specifying "A" as the decl context for B. Turns out we can just start the definition and still not complete the class since we can check the TagDecl::isCompleteDefinition() function. This only works for C++ types. This means we will not be pulling in the full definition of parent classes all the time and should help with our memory consumption and also reduce the amount of debug info we have to parse.

I also reduced redundant code that was checking in a lldb::clang_type_t was a possible C++ dynamic type since it was still completing the type, just to see if it was dynamic. This was fixed in another function that was checking for a type being dynamic as an ObjC or a C++ type, but there was dedicated fucntion for C++ that we missed.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@153713 91177308-0d34-0410-b5e6-96231b3b80d8
1ec8f8fc244b7714a7847525cb9474ebcd85487a 29-Mar-2012 Sean Callanan <scallanan@apple.com> Added support for the DW_AT_APPLE_Property tag
for unbacked properties. We support two variants:
one in which the getter/setter are provided by
selector ("mySetter:") and one in which the
getter/setter are provided by signature
("-[MyClass mySetter:]").

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@153675 91177308-0d34-0410-b5e6-96231b3b80d8
dc0a38c5a727cae5362b218a3180d0f4265a619d 27-Mar-2012 Greg Clayton <gclayton@apple.com> <rdar://problem/11113279>

Fixed type lookups to "do the right thing". Prior to this fix, looking up a type using "foo::bar" would result in a type list that contains all types that had "bar" as a basename unless the symbol file was able to match fully qualified names (which our DWARF parser does not).

This fix will allow type matches to be made based on the basename and then have the types that don't match filtered out. Types by name can be fully qualified, or partially qualified with the new "bool exact_match" parameter to the Module::FindTypes() method.

This fixes some issue that we discovered with dynamic type resolution as well as improves the overall type lookups in LLDB.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@153482 91177308-0d34-0410-b5e6-96231b3b80d8
d44c9d31d23d0b44ce40325ad69226889a9638bc 24-Mar-2012 Enrico Granata <egranata@apple.com> Adding a new API call IsTypeComplete() to SBType. This call is meant to check if the type has been previously completed or not (which is mostly interesting from a performance point of view)

Adding a test case that checks that we do not complete types before due time. This should help us track cases similar to the cascading data formatters.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@153363 91177308-0d34-0410-b5e6-96231b3b80d8
74e422d4bd8c5ef5bee4ad76b118972978c825e3 22-Mar-2012 Greg Clayton <gclayton@apple.com> <rdar://problem/11095005>

Fixed a performance regression when dynamic types are enable where we would ask a C++ type if it can possibly be dynamic. Previously we would force the type to complete itself and then anwwer the question definitively. Now we ask the type if it is already complete and only definitively answer the question for completed types and just say "yes" for non-complete C++ types. We also always now answer yes for Objective C classes and do not complete those types either.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@153284 91177308-0d34-0410-b5e6-96231b3b80d8
9a357a46c072fa96e799b9f31621df3d8544f60b 10-Mar-2012 Sean Callanan <scallanan@apple.com> ...And finished the job.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@152472 91177308-0d34-0410-b5e6-96231b3b80d8
fe1e5ec051f87777043221a5d6f0475d7606d688 10-Mar-2012 Sean Callanan <scallanan@apple.com> Hardened isObjCObjectPointerType() against NULLs.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@152471 91177308-0d34-0410-b5e6-96231b3b80d8
1bc1caddf53e812ba87411f76fc15b7971930c22 07-Mar-2012 Johnny Chen <johnny.chen@apple.com> rdar://problem/10611315
expression command doesn't handle xmm or stmm registers...

o Update ClangASTContext::GetBuiltinTypeForEncodingAndBitSize() to now handle eEncodingVector.

o Modify RegisterValue::SetFromMemoryData() to fix the subtle error due to unitialized variables.

o Add a test file for "expr $xmm0".

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@152190 91177308-0d34-0410-b5e6-96231b3b80d8
3552ed0afbb58f377a4677ae5253e59b3ed80954 02-Mar-2012 Sean Callanan <scallanan@apple.com> Improved the type's handling of anonymous structs,
so that the expression parser can look up members
of anonymous structs correctly. This meant creating
all the proper IndirectFieldDecls in each Record
after it has been completely populated with members.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@151868 91177308-0d34-0410-b5e6-96231b3b80d8
142f94c8a1498c5269a9f878ed92adf0ffc71215 01-Mar-2012 Sean Callanan <scallanan@apple.com> Updated LLVM to take a new MC JIT that supports
allocations by section. We install these sections
in the target process and inform the JIT of their
new locations.

Also removed some unused variable warnings.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@151789 91177308-0d34-0410-b5e6-96231b3b80d8
931acecd4e3af534028936431dc0f75a9fd6eb02 23-Feb-2012 Sean Callanan <scallanan@apple.com> Added support for looking up the complete type for
Objective-C classes. This allows LLDB to find
ivars declared in class extensions in modules other
than where the debugger is currently stopped (we
already supported this when the debugger was
stopped in the same module as the definition).

This involved the following main changes:

- The ObjCLanguageRuntime now knows how to hunt
for the authoritative version of an Objective-C
type. It looks for the symbol indicating a
definition, and then gets the type from the
module containing that symbol.

- ValueObjects now report their type with a
potential override, and the override is set if
the type of the ValueObject is an Objective-C
class or pointer type that is defined somewhere
other than the original reported type. This
means that "frame variable" will always use the
complete type if one is available.

- The ClangASTSource now looks for the complete
type when looking for ivars. This means that
"expr" will always use the complete type if one
is available.

- I added a testcase that verifies that both
"frame variable" and "expr" work.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@151214 91177308-0d34-0410-b5e6-96231b3b80d8
70c6cf4b614cd79a54cf1a8696f7b4c963229868 18-Feb-2012 Sean Callanan <scallanan@apple.com> Ignore the constness of the object pointer when
fetching it.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@150861 91177308-0d34-0410-b5e6-96231b3b80d8
97b675ecde7a3b7ebb4161fbecb122fb22c2b6ea 06-Feb-2012 Sean Callanan <scallanan@apple.com> I left some stray debugging messages in the source
code. Removing these.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@149903 91177308-0d34-0410-b5e6-96231b3b80d8
b7fad95031b51dde040dc8b3de7bd8db2d14f613 06-Feb-2012 Greg Clayton <gclayton@apple.com> Almost have templatized functions working (templatized classes are already
working, but not functions). I need to check on a few things to make sure
I am registering everything correctly in the right order and in the right

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@149858 91177308-0d34-0410-b5e6-96231b3b80d8
8f2e392e8937aaf66f91201dc5f4190d61902c67 04-Feb-2012 Sean Callanan <scallanan@apple.com> I have brought LLDB up-to-date with top of tree
LLVM/Clang. This brings in several fixes, including:

- Improvements in the Just-In-Time compiler's
allocation of memory: the JIT now allocates
memory in chunks of sections, improving its
ability to generate relocations. I have
revamped the RecordingMemoryManager to reflect
these changes, as well as to get the memory
allocation and data copying out fo the
ClangExpressionParser code. Jim Grosbach wrote
the updates to the JIT on the LLVM side.

- A new ExternalASTSource interface to allow LLDB to
report accurate structure layout information to
Clang. Previously we could only report the sizes
of fields, not their offsets. This meant that if
data structures included field alignment
directives, we could not communicate the necessary
alignment to Clang and accesses to the data would
fail. Now we can (and I have update the relevant
test case). Thanks to Doug Gregor for implementing
the Clang side of this fix.

- The way Objective-C interfaces are completed by
Clang has been made consistent with RecordDecls;
with help from Doug Gregor and Greg Clayton I have
ensured that this still works.

- I have eliminated all local LLVM and Clang patches,
committing the ones that are still relevant to LLVM
and Clang as needed.

I have tested the changes extensively locally, but
please let me know if they cause any trouble for you.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@149775 91177308-0d34-0410-b5e6-96231b3b80d8
3eeaf6e715784499520885535236ccff1ba56d1c 03-Feb-2012 Greg Clayton <gclayton@apple.com> Added support to SBType for getting template arguments from a SBType:

SBType::GetNumberOfTemplateArguments ();

SBType::GetTemplateArgumentType (uint32_t idx);

SBType::GetTemplateArgumentKind (uint32_t idx);

Some lldb::TemplateArgumentKind values don't have a corresponding SBType
that will be returned from SBType::GetTemplateArgumentType(). This will
help our data formatters do their job by being able to find out the
type of template params and do smart things with those.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@149658 91177308-0d34-0410-b5e6-96231b3b80d8
ebad95d436237a0ecd4e28307d7e37ce997536c1 20-Jan-2012 Sean Callanan <scallanan@apple.com> Made IsArrayOfScalarType handle typedefs correctly.

We should ultimately introduce GetAs...Type
functions in all cases where we have Is...Type
functions that know how to look inside typedefs.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@148512 91177308-0d34-0410-b5e6-96231b3b80d8
d0d73728f2840432f77f01dcd040b76a8c6307a9 13-Jan-2012 Sean Callanan <scallanan@apple.com> If the name of a struct or union is NULL in the
debug info, call it anonymous. This isn't
perfect, because Clang actually considers the
following struct not to be anonymous:

struct {
int x;
int y;
} g_foo;
but DWARF doesn't make the distinction.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@148145 91177308-0d34-0410-b5e6-96231b3b80d8
df6dc88322f103b263092d752db4490e628a1cbd 05-Jan-2012 Greg Clayton <gclayton@apple.com> Added code in the Host layer that can report system log messages
so that we don't have "fprintf (stderr, ...)" calls sprinkled everywhere.
Changed all needed locations over to using this.

For non-darwin, we log to stderr only. On darwin, we log to stderr _and_
to ASL (Apple System Log facility). This will allow GUI apps to have a place
for these error and warning messages to go, and also allows the command line
apps to log directly to the terminal.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@147596 91177308-0d34-0410-b5e6-96231b3b80d8
016ef8886cd429f8a53bff967e601f831e409eaa 22-Dec-2011 Jim Ingham <jingham@apple.com> 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.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@147157 91177308-0d34-0410-b5e6-96231b3b80d8
da81daeca68f0290d3509435f3b322c9f2e6edef 10-Dec-2011 Sean Callanan <scallanan@apple.com> Fixed a problem with properties where LLDB was not
creating appropriate setter/getter methods for
property definitions.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@146295 91177308-0d34-0410-b5e6-96231b3b80d8
514970a1bafdd36ce128a70ec8839b74b3aa77ba 08-Dec-2011 Jim Ingham <jingham@apple.com> Get the bit-field offset & size for ObjC ivars that are bitfields.
<rdar://problem/10535460> lldb expression evaluation doesn't handle bit fields in ObjC classes properly

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@146134 91177308-0d34-0410-b5e6-96231b3b80d8
2fc7e8d0d392fe85f22d9c75212ebca4cbce547f 03-Dec-2011 Sean Callanan <scallanan@apple.com> Added ClangExternalASTSourceCommon, a local superclass
for all our external AST sources that lets us associate
arbitrary flags with the types we put into the AST
contexts. Also added an API on ClangASTContext that
allows access to these flags given only an ASTContext
and a type.

Because we don't have access to RTTI, and because at
some point in the future we might encounter external
AST sources that we didn't make (so they don't subclass
ClangExternalASTSourceCommon) I added a magic number
that we check before doing anything else, so that we
can catch that problem as soon as it appears.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@145748 91177308-0d34-0410-b5e6-96231b3b80d8
4b9cf3d9c856d23e2d440c8dfc1e1850692432e1 02-Dec-2011 Greg Clayton <gclayton@apple.com> <rdar://problem/10394517>

Fixed templates with NonTypeTemplateParmDecl objects. For example:

template <unsigned N>

This fixes SmallVector and all of the other classes that have template params
that are non types.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@145667 91177308-0d34-0410-b5e6-96231b3b80d8
673f3dbea64b116166dfa668006cdc84224a27c0 30-Nov-2011 Sean Callanan <scallanan@apple.com> 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

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

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@145526 91177308-0d34-0410-b5e6-96231b3b80d8
d9b798561f6f54d8ce3cffeff1f104835279a895 19-Nov-2011 Sean Callanan <scallanan@apple.com> Ensure that the empty RecordDecl generated for
templates is properly complete (though still

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@144982 91177308-0d34-0410-b5e6-96231b3b80d8
e6ea5fe8e76b028a0565bc01543bc15f8c120e8a 15-Nov-2011 Sean Callanan <scallanan@apple.com> Pulled in a new version of LLVM/Clang to solve a variety
of problems with Objective-C object completion. To go
along with the LLVM/Clang-side fixes, we have a variety
of Objective-C improvements.

Fixes include:

- It is now possible to run expressions when stopped in
an Objective-C class method and have "self" act just
like "self" would act in the class method itself (i.e.,
[self classMethod] works without casting the return
type if debug info is present). To accomplish this,
the expression masquerades as a class method added by
a category.

- Objective-C objects can now provide methods and
properties and methods to Clang on demand (i.e., the
ASTImporter sets hasExternalVisibleDecls on Objective-C
interface objects).

- Objective-C built-in types, which had long been a bone
of contention (should we be using "id"? "id*"?), are
now fetched correctly using accessor functions on
ClangASTContext. We inhibit searches for them in the
debug information.

There are also a variety of logging fixes, and I made two
changes to the test suite:

- Enabled a test case for Objective-C properties in the
current translation unit.

- Added a test case for calling Objective-C class methods
when stopped in a class method.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@144607 91177308-0d34-0410-b5e6-96231b3b80d8
96154be69fa240a662419183ed08e1cfc5418164 13-Nov-2011 Greg Clayton <gclayton@apple.com> <rdar://problem/10126482>

Fixed an issues with the SBType and SBTypeMember classes:
- Fixed SBType to be able to dump itself from python
- Fixed SBType::GetNumberOfFields() to return the correct value for objective C interfaces
- Fixed SBTypeMember to be able to dump itself from python
- Fixed the SBTypeMember ability to get a field offset in bytes (the value
being returned was wrong)
- Added the SBTypeMember ability to get a field offset in bits

Cleaned up a lot of the Stream usage in the SB API files.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@144493 91177308-0d34-0410-b5e6-96231b3b80d8
2546fd2a7adb2081e77ce6779e25646c0e3498a9 12-Nov-2011 Jim Ingham <jingham@apple.com> Add code that reads the APPLE_property debug info, and makes up properties from them.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@144440 91177308-0d34-0410-b5e6-96231b3b80d8
f2a0a5c6c0ccf8c75a3409024d088646ed211726 11-Nov-2011 Sean Callanan <scallanan@apple.com> Updated LLVM/Clang to pull in a fix for Objective-C
interfaces. This allows us to pull in Objective-C
method types on demand, which is also now implemented.

Also added a minor fix to prevent multiple-definition
errors for "Class" and "id".

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@144405 91177308-0d34-0410-b5e6-96231b3b80d8
32e2564f9af50147044dcdc0c9677bba0fcb4287 09-Nov-2011 Greg Clayton <gclayton@apple.com> Cleanup some warnings.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@144200 91177308-0d34-0410-b5e6-96231b3b80d8
3e4238d47a6d1a3106f357d2e7b495870721c7ae 04-Nov-2011 Greg Clayton <gclayton@apple.com> Fixed the Xcode project building of LLVM to be a bit more user friendly:

- If you download and build the sources in the Xcode project, x86_64 builds
by default using the "llvm.zip" checkpointed LLVM.
- If you delete the "lldb/llvm.zip" and the "lldb/llvm" folder, and build the
Xcode project will download the right LLVM sources and build them from
- If you have a "lldb/llvm" folder already that contains a "lldb/llvm/lib"
directory, we will use the sources you have placed in the LLDB directory.

Python can now be disabled for platforms that don't support it.

Changed the way the libllvmclang.a files get used. They now all get built into
arch specific directories and never get merged into universal binaries as this
was causing issues where you would have to go and delete the file if you wanted
to build an extra architecture slice.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@143678 91177308-0d34-0410-b5e6-96231b3b80d8
28ebe88ad7fdaf6756c140ceabb7098a0325c87c 02-Nov-2011 Sean Callanan <scallanan@apple.com> Updated LLVM/Clang to pull in an MCJIT fix that
allows us to set __attribute__ ((used)) on expressions
that masquerade as methods. When we are stopped in
classes in anonymous namespaces, this fix (and enabling
__attribute__ ((used)) on the method) will allow
expressions to run.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@143560 91177308-0d34-0410-b5e6-96231b3b80d8
f84d4dd67e4547c01f517c4c6ed9a39462d05dad 02-Nov-2011 Greg Clayton <gclayton@apple.com> <rdar://problem/10020849>

Fixed an issue where the DWARF might mention that a class has a constructor
(default, copy or move), destructor, or an assignment operator (copy or move)
and it might not have an actual implementation in your code. Then you try and
use this struct or class in an expression and the JIT would ask for the
address of these methods that were in the declaration, yet there are none.
We now "do the right thing" for trivial ctors, dtors and assignment operators
by telling the methods that they are are defaulted and trivial, and clang will
then just do all of the work with builtins!

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@143528 91177308-0d34-0410-b5e6-96231b3b80d8
2581dbf7292c6272bb771fe396ab30921385d669 02-Nov-2011 Sean Callanan <scallanan@apple.com> Sometimes the debug information includes artifically-
generated special member functions (constructors,
destructors, etc.) for classes that don't really have
them. We needed to mark these as artificial to reflect
the debug information; this bug does that for
constructors and destructors.

The "etc." case (certain assignment operators, mostly)
remains to be fixed.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@143526 91177308-0d34-0410-b5e6-96231b3b80d8
716e3f07f6c41436b2845b172975fd45b456c8f0 01-Nov-2011 Sean Callanan <scallanan@apple.com> Added the capability (turned off for now) to mark a
method as __attribute__ ((used)) when adding it to a
class. This functionality is useful when stopped in
anonymous namespaces: expressions attached to classes
in anonymous namespaces are typically elided by Clang's
CodeGen because they have no namespaces are intended
not to be externally visible. __attribute__ ((used))
forces CodeGen to emit the function.

Right now, __attribute__ ((used)) causes the JIT not to
emit the function, so we're not enabling it until we
fix that.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@143469 91177308-0d34-0410-b5e6-96231b3b80d8
b51693999473f5dc7cb9681bbbc4a65028eea35b 01-Nov-2011 Greg Clayton <gclayton@apple.com> Fixed some warnings after enabling some stricter warnings in the Xcode project

Also fixed an issue where we weren't creating anonymous namepaces correctly:

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@143403 91177308-0d34-0410-b5e6-96231b3b80d8
354ffde621c3c7560000fdafb085205bf5a5a545 31-Oct-2011 Daniel Dunbar <daniel@zuster.org> warnings: Get rid of spurious semicolon.

git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@143384 91177308-0d34-0410-b5e6-96231b3b80d8
ca54193ca2c9adc31facadb17423f1937e92f6c3 29-Oct-2011 Greg Clayton <gclayton@apple.com> Added support for C++0x char16_t and char32_t types.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@143246 91177308-0d34-0410-b5e6-96231b3b80d8
6f3bde75715fc2e1da483570c0c9241227c14c84 27-Oct-2011 Sean Callanan <scallanan@apple.com> Changed the way the expression parser handles variables
of reference types. Previously, such variables were
materialized as references to those references, which
caused undesried behavior in Clang and was useless anyway
(the benefit of using references to variables is that it
allows expressions to modify variables in place, but for
references that's not required).

Now we just materialize the references directly, which
fixes a variety of expressions that use references.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@143137 91177308-0d34-0410-b5e6-96231b3b80d8
a31b4ddfd213da1c2595fe2c5ae599d05de65400 26-Oct-2011 Sean Callanan <scallanan@apple.com> Added a new #define, LLVM_NDEBUG_OFF, that should
be set if linking against an LLVM compiled with
NDEBUG off. If it is set, we do not enable NDEBUG
in any place where we include LLVM headers.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@143036 91177308-0d34-0410-b5e6-96231b3b80d8
5e8eb5c428e91b99f3884b53fc5deea0ecb001cd 26-Oct-2011 Greg Clayton <gclayton@apple.com> Fixed an issue where a class that resides inside another class wasn't getting
an access specifier set on it, causing an assertion to fire when building
with a Debug+Asserts build of clang.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@143010 91177308-0d34-0410-b5e6-96231b3b80d8
c6d161e3ed961e40242b5a0482a3354848c7cd57 26-Oct-2011 Sean Callanan <scallanan@apple.com> Added VerifyDecl, a function that, when LLDB is
linked against a debug LLVM, runs a variety of
functions -- currently just one -- that verify
that the Decls we create are valid.

ClangASTContext now calls this verifier whenever
it adds a Decl to a DeclContext, and the verifier
checks that the AccessSpecifier is sane.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@143000 91177308-0d34-0410-b5e6-96231b3b80d8
f6a5bd78aaef0e4d477208289ace03cfa7f60649 22-Oct-2011 Greg Clayton <gclayton@apple.com> Added template support when parsing DWARF into types. We can now use STL
classes in the expression parser.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@142717 91177308-0d34-0410-b5e6-96231b3b80d8
37e278307f2d2c01077e15f9787ab93777e023fb 15-Oct-2011 Sean Callanan <scallanan@apple.com> Handled the call operator properly.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@142033 91177308-0d34-0410-b5e6-96231b3b80d8
5f24c5053d9fa99bd20e6b1e5b8c659c68d57be7 15-Oct-2011 Greg Clayton <gclayton@apple.com> Add function decls to their parent decl context.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@142011 91177308-0d34-0410-b5e6-96231b3b80d8
6364304894596829a96c8cd3b07b4ea5e00029da 14-Oct-2011 Greg Clayton <gclayton@apple.com> Make sure we create only unique one namespace per AST when parsing the DWARF.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@142005 91177308-0d34-0410-b5e6-96231b3b80d8
9f54ab7b1fb850e31c82c53d7e6967be8547e7ab 14-Oct-2011 Greg Clayton <gclayton@apple.com> 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.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@141908 91177308-0d34-0410-b5e6-96231b3b80d8
bc36a861b8e0b2f2dde34f27c9fa9629a357d598 08-Oct-2011 Greg Clayton <gclayton@apple.com> Added more functionality to Range template classes in RangeMap.h and converted remaining DWARF areas that were using ranges over to this class. Also converted lldb_private::Block to use it.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@141460 91177308-0d34-0410-b5e6-96231b3b80d8
c1535187de67e4ce48053a7677c76825adcdda44 08-Oct-2011 Sean Callanan <scallanan@apple.com> Updated LLVM/Clang to pull in the latest ARM disassembler.
This involved minor changes to the way we report Objective-C
methods, as well as cosmetic changes and added parameters
for a variety of Clang APIs.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@141437 91177308-0d34-0410-b5e6-96231b3b80d8
567e7f3ba16eb48cb9fd6a2f26f2f7269eb6983c 22-Sep-2011 Greg Clayton <gclayton@apple.com> Converted the lldb_private::Process over to use the intrusive
shared pointers.

Changed the ExecutionContext over to use shared pointers for
the target, process, thread and frame since these objects can
easily go away at any time and any object that was holding onto
an ExecutionContext was running the risk of using a bad object.

Now that the shared pointers for target, process, thread and
frame are just a single pointer (they all use the instrusive
shared pointers) the execution context is much safer and still
the same size.

Made the shared pointers in the the ExecutionContext class protected
and made accessors for all of the various ways to get at the pointers,
references, and shared pointers.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@140298 91177308-0d34-0410-b5e6-96231b3b80d8
d68e089f8353eaf845c3559dac6d47b32830974f 10-Sep-2011 Greg Clayton <gclayton@apple.com> Added the ability to introspect types thourgh the public SBType interface.

Fixed up many API calls to not be "const" as const doesn't mean anything to
most of our lldb::SB objects since they contain a shared pointer, auto_ptr, or
pointer to the types which circumvent the constness anyway.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@139428 91177308-0d34-0410-b5e6-96231b3b80d8
32b4f14eb8bb47cf6e2eb545253e3c03c687ed52 25-Aug-2011 Greg Clayton <gclayton@apple.com> Fix so we don't create C++ classes for all objective C classes when we have a
objective C++ source file.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@138527 91177308-0d34-0410-b5e6-96231b3b80d8
cbfc0ea71785f0affc7ea9ada6d344f822455d47 19-Aug-2011 Sean Callanan <scallanan@apple.com> Refined the rollback to LLVM, picking up a newer
revision and adding a patch that fixes an AsmParser
crash on ARM.

One feature that we unfortunately lost (for the
moment!) is the ability to cast unknown code symbols
to arbitrary function types and put the resulting
function pointer in a result variable. This feature
will be back, though.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@138036 91177308-0d34-0410-b5e6-96231b3b80d8
c613971c0016484053b60db95d01648a3f6ea849 12-Aug-2011 Sean Callanan <scallanan@apple.com> Fixed LLDB's handling of ElaboratedTypes, which was
causing problems with printing the values of persistent
variables with struct types.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@137392 91177308-0d34-0410-b5e6-96231b3b80d8
8c1d7203f726e3a62b832dbeeaf0ae76f9f65222 05-Aug-2011 Greg Clayton <gclayton@apple.com> Fixed issues for iOS debugging where if a device has
a native architecture that doesn't match the universal
slice that is being used for all executables, we weren't
correctly descending through the platform architectures
and resolving the binaries.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@136980 91177308-0d34-0410-b5e6-96231b3b80d8
a83f8779ac614263d92959d2338e6e9f08d8f9fb 04-Aug-2011 Greg Clayton <gclayton@apple.com> Make sure we track CXX and objc method decls.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@136920 91177308-0d34-0410-b5e6-96231b3b80d8
9b6898f3ec1dedbe1dfc8bd7cd1d82a5b10e1bb0 30-Jul-2011 Sean Callanan <scallanan@apple.com> This change brings in the latest LLVM/Clang, and
completes the support in the LLDB expression parser
for incomplete types. Clang now imports types
lazily, and we complete those types as necessary.

Changes include:

- ClangASTSource now supports three APIs which it
passes to ClangExpressionDeclMap. CompleteType
completes a TagDecl or an ObjCInterfaceDecl when
needed; FindExternalVisibleDecls finds named
entities that are visible in the expression's
scope; and FindExternalLexicalDecls performs a
(potentially restricted) search for entities
inside a lexical scope like a namespace. These
changes mean that entities in namespaces should
work normally.

- The SymbolFileDWARF code for searching a context
for a specific name is now more general, and can
search arbitrary contexts.

- We are continuing to adapt our calls into LLVM
from interfaces that take start and end iterators
when accepting multiple items to interfaces that
use ArrayRef.

- I have cleaned up some code, especially our use
of namespaces.

This change is neutral for our testsuite and greatly
improves correctness for large programs (like Clang)
with complicated type systems. It should also lay
the groundwork for improving the expression parser's
performance as we are lazier and lazier about
providing type information.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@136555 91177308-0d34-0410-b5e6-96231b3b80d8
dcc59f079edcd40cfba46eec1cd323341261a5e2 30-Jul-2011 Greg Clayton <gclayton@apple.com> Fixed a compile error.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@136551 91177308-0d34-0410-b5e6-96231b3b80d8
979e20d127335143ffc89c2e37ec3a8b717ff22d 29-Jul-2011 Enrico Granata <granata.enrico@gmail.com> 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

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@136504 91177308-0d34-0410-b5e6-96231b3b80d8
90d207ede88604e278f68ee1b02600a35e56dd14 16-Jul-2011 Enrico Granata <granata.enrico@gmail.com> System-wide summaries:
- Summaries for char*, const char* and char[] are loaded at startup as
system-wide summaries. This means you cannot delete them unless you use
the -a option to type summary delete/clear
- You can add your own system-wide summaries by using the -w option to type
summary add
Several code improvements for the Python summaries feature

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@135326 91177308-0d34-0410-b5e6-96231b3b80d8
1a102087f54079c25c8827afac6153a44ca535da 12-Jul-2011 Enrico Granata <granata.enrico@gmail.com> named summaries:
- a new --name option for "type summary add" lets you give a name to a summary
- a new --summary option for "frame variable" lets you bind a named summary to one or more variables
${var%s} now works for printing the value of 0-terminated CStrings
type format test case now tests for cascading
- this is disabled on GCC because GCC may end up stripping typedef chains, basically breaking cascading
new design for the FormatNavigator class
new template class CleanUp2 meant to support cleanup routines with 1 additional parameter beyond resource handle

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@134943 91177308-0d34-0410-b5e6-96231b3b80d8
24b03108fe8d672bf96b2cfd491e99e601f03218 09-Jul-2011 Greg Clayton <gclayton@apple.com> Fixed the global and static variables to always be in scope.

Made it so that you can create synthetic children of array
value objects. This is for creating array members when the
array index is out of range. This comes in handy when you have
a structure definition like:

struct Collection
uint32_t count;
Item array[0];
"array" has 1 item, but many times in practice there are more
items in "item_array".

This allows you to do:

(lldb) target variable g_collection.array[3]

To implement this, the get child at index has been modified
to have a "ignore_array_bounds" boolean that can be set to true.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@134846 91177308-0d34-0410-b5e6-96231b3b80d8
59e093da47e46146dd5b8cddd4dd8dcfcfa31a65 09-Jul-2011 Greg Clayton <gclayton@apple.com> Fixed an issue with getting the size of an array from an opaque clang_type_t
variable where we were using a static cast when we shouldn't have been.
Fixed another array related issue where we weren't looking through a typedef.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@134823 91177308-0d34-0410-b5e6-96231b3b80d8
19c0d58b8d2c168b835477e6a681e971ac32ece5 08-Jul-2011 Greg Clayton <gclayton@apple.com> Fixed a few issues where typedefs weren't passing through to the correct
recursive function.

Also fixed ClangASTContext::IsPointerType to correctly NULL out the pointee
handle if a valid one is provided.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@134715 91177308-0d34-0410-b5e6-96231b3b80d8
9762e10787a7efc2f0d822590cab42ca23d5e4f9 06-Jul-2011 Enrico Granata <granata.enrico@gmail.com> new syntax for summary strings:
- ${*expr} now simply means to dereference expr before actually using it
- bitfields, array ranges and pointer ranges now work in a (hopefully) more natural and language-compliant way
a new class TypeHierarchyNavigator replicates the behavior of the FormatManager in going through type hierarchies
when one-lining summary strings, children's summaries can be used as well as values

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@134458 91177308-0d34-0410-b5e6-96231b3b80d8
886bc3e5cb48e9660692609a7be69ec15b898bd7 02-Jul-2011 Enrico Granata <granata.enrico@gmail.com> several improvements to "type summary":
- type names can now be regular expressions (exact matching is done first, and is faster)
- integral (and floating) types can be printed as bitfields, i.e. ${var[low-high]} will extract bits low thru high of the value and print them
- array subscripts are supported, both for arrays and for pointers. the syntax is ${*var[low-high]}, or ${*var[]} to print the whole array (the latter only works for statically sized arrays)
- summary is now printed by default when a summary string references a variable. if that variable's type has no summary, value is printed instead. to force value, you can use %V as a format specifier
- basic support for ObjectiveC:
- ObjectiveC inheritance chains are now walked through
- %@ can be specified as a summary format, to print the ObjectiveC runtime description for an object
- some bug fixes

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@134293 91177308-0d34-0410-b5e6-96231b3b80d8
b302b2f50e079b11a12ebafc29104c198f4f15e4 30-Jun-2011 Greg Clayton <gclayton@apple.com> Centralize all of the type name code so that we always strip the leading
"struct ", "class ", and "union " from the start of any type names that are
extracted from clang QualType objects. I had to fix test suite cases that
were expecting the struct/union/class prefix to be there.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@134132 91177308-0d34-0410-b5e6-96231b3b80d8
917c000e77fcf657099f59085d6436d179a39ea4 30-Jun-2011 Greg Clayton <gclayton@apple.com> Added support for finding and global variables in the SBTarget and SBModule
level in the public API.

Also modified the ValueObject values to be able to display global variables
without having a valid running process. The globals will read themselves from
the object file section data if there is no process, and from the process if
there is one.

Also fixed an issue where modifications for dynamic types could cause child
values of ValueObjects to not show up if the value was unable to evaluate
itself (children of NULL pointer objects).

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@134102 91177308-0d34-0410-b5e6-96231b3b80d8
e6d72ca9a6b22cd062136bbff039c3d8217f798a 25-Jun-2011 Greg Clayton <gclayton@apple.com> This commit adds broad architectural support for hierarchical
inspection of namespaces in the expression parser.

ClangExpressionDeclMap hitherto reported that namespaces had
been completely imported, even though the namespaces are
returned empty. To deal with this situation, ClangASTSource
was recently extended with an API to complete incomplete type
definitions, and, for greater efficiency, to complete these
definitions partially, returning only those objects that have
a given name.

This commit supports these APIs on LLDB's side, and uses it
to provide information on types resident in namespaces.
Namespaces are now imported as they were -- that is to say,
empty -- but with minimal import mode on. This means that
Clang will come back and request their contents by name as
needed. We now respond with information on the contained
types; this will be followed soon by information on functions
and variables.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@133852 91177308-0d34-0410-b5e6-96231b3b80d8
58513667f6765aa8db13cdc4abd500340c1cac80 25-Jun-2011 Jim Ingham <jingham@apple.com> Add support for looking up ivar offset from the ObjC runtime.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@133831 91177308-0d34-0410-b5e6-96231b3b80d8
8c6907c4daa74a8ebc418ec6eed151b68bda6321 19-Jun-2011 Greg Clayton <gclayton@apple.com> Fixed a case where LLDB would crash if we get C++ operators with invalid
operator counts due to bad debug DWARF debug info. We now verify the operator
has a valid number of params using the clang operator tables.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@133375 91177308-0d34-0410-b5e6-96231b3b80d8
0f5e6f1a01b340d463fbdc692f3af492774a5ec4 02-Jun-2011 Greg Clayton <gclayton@apple.com> Use the correct accessor on CXXRecordDecl to know when a C++ class is dynamic.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@132449 91177308-0d34-0410-b5e6-96231b3b80d8
82f0746880b4a6b18bcf8666670140f5b4a56791 30-May-2011 Greg Clayton <gclayton@apple.com> lldb-59.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@132304 91177308-0d34-0410-b5e6-96231b3b80d8
a71464f0ac148cf5d6bfc0ed009edc3b97076dab 20-May-2011 Charles Davis <cdavis@mines.edu> Use a SmallVector here instead of a VLA.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@131698 91177308-0d34-0410-b5e6-96231b3b80d8
5a570908d7c5c7cfd342e5b100ca596780f5b958 17-May-2011 Greg Clayton <gclayton@apple.com> Fixed an assert that could cause a crash when there was an
unrecognized DW_TAG_base_type. Now it is a error printed to

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@131473 91177308-0d34-0410-b5e6-96231b3b80d8
0de254aaec7d6766379191e5397ec2294042c5d7 16-May-2011 Sean Callanan <scallanan@apple.com> Updated to use the latest LLVM/Clang, to pick up JIT

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@131391 91177308-0d34-0410-b5e6-96231b3b80d8
fb3058efeaacc2ced967e46842dfc4875b3daf14 13-May-2011 Sean Callanan <scallanan@apple.com> Introduced support for UnknownAnyTy, the Clang type
representing variables whose type must be inferred
from the way they are used. Functions without debug
information now return UnknownAnyTy and must be cast.

Variables with no debug information are not yet using
UnknownAnyTy; instead they are assumed to be void*.
Support for variables of unknown type is coming (and,
in fact, some relevant support functions are included
in this commit) but will take a bit of extra effort.

The testsuite has also been updated to reflect the new
requirement that the result of printf be cast, i.e.

expr (int) printf("Hello world!")

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@131263 91177308-0d34-0410-b5e6-96231b3b80d8
abe0fed36d83e1c37af9dae90c2d25db742b4515 18-Apr-2011 Greg Clayton <gclayton@apple.com> Centralized a lot of the status information for processes,
threads, and stack frame down in the lldb_private::Process,
lldb_private::Thread, lldb_private::StackFrameList and the
lldb_private::StackFrame classes. We had some command line
commands that had duplicate versions of the process status
output ("thread list" and "process status" for example).

Removed the "file" command and placed it where it should
have been: "target create". Made an alias for "file" to
"target create" so we stay compatible with GDB commands.

We can now have multple usable targets in lldb at the
same time. This is nice for comparing two runs of a program
or debugging more than one binary at the same time. The
new command is "target select <target-idx>" and also to see
a list of the current targets you can use the new "target list"
command. The flow in a debug session can be:

(lldb) target create /path/to/exe/a.out
(lldb) breakpoint set --name main
(lldb) run
... hit breakpoint
(lldb) target create /bin/ls
(lldb) run /tmp
Process 36001 exited with status = 0 (0x00000000)
(lldb) target list
Current targets:
target #0: /tmp/args/a.out ( arch=x86_64-apple-darwin, platform=localhost, pid=35999, state=stopped )
* target #1: /bin/ls ( arch=x86_64-apple-darwin, platform=localhost, pid=36001, state=exited )
(lldb) target select 0
Current targets:
* target #0: /tmp/args/a.out ( arch=x86_64-apple-darwin, platform=localhost, pid=35999, state=stopped )
target #1: /bin/ls ( arch=x86_64-apple-darwin, platform=localhost, pid=36001, state=exited )
(lldb) bt
* thread #1: tid = 0x2d03, 0x0000000100000b9a a.out`main + 42 at main.c:16, stop reason = breakpoint 1.1
frame #0: 0x0000000100000b9a a.out`main + 42 at main.c:16
frame #1: 0x0000000100000b64 a.out`start + 52

Above we created a target for "a.out" and ran and hit a
breakpoint at "main". Then we created a new target for /bin/ls
and ran it. Then we listed the targest and selected our original
"a.out" program, so we showed two concurent debug sessions
going on at the same time.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@129695 91177308-0d34-0410-b5e6-96231b3b80d8
9994a0bcfe1790b320f6a9cf51c8d5ac9c4efdbd 16-Apr-2011 Jim Ingham <jingham@apple.com> Fix comment typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@129621 91177308-0d34-0410-b5e6-96231b3b80d8
381f968161e2274c55706ead0baed444a26b5092 01-Apr-2011 Greg Clayton <gclayton@apple.com> Get rid of LONG_LONG_MAX and ULONG_LONG_MAX, and use LLONG_MAX and ULLONG_MAX

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@128720 91177308-0d34-0410-b5e6-96231b3b80d8
279584cdea3dfda933480ed0fe948df2697ab512 15-Mar-2011 Sean Callanan <scallanan@apple.com> Updated to LLVM/Clang revision 127600.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@127634 91177308-0d34-0410-b5e6-96231b3b80d8
04c9c7b03fbec6d0dcc6c848391147de2f129c66 17-Feb-2011 Greg Clayton <gclayton@apple.com> Clean up a bit of the type getting code where lldb_private:Type now has

GetClangFullType(); // Get a completely defined clang type

GetClangLayoutType(); // Get a clang type that can be used for type layout

GetClangForwardType(); // A type that can be completed if needed, but is more efficient.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@125691 91177308-0d34-0410-b5e6-96231b3b80d8
395fc33dc4b06c048ed35047ec461bc092ef2df3 15-Feb-2011 Greg Clayton <gclayton@apple.com> Made lldb_private::ArchSpec contain much more than just an architecture. It
now, in addition to cpu type/subtype and architecture flavor, contains:
- byte order (big endian, little endian)
- address size in bytes
- llvm::Triple for true target triple support and for more powerful plug-in

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@125602 91177308-0d34-0410-b5e6-96231b3b80d8
7bb069b2216523f21fb6a3ce867f2f7278b1b07b 10-Feb-2011 Greg Clayton <gclayton@apple.com> Modified version of a patch from Warren Paul that takes care of issues with
indirect forms, deals with empty DW_AT_comp_dir attributes, and fixups for
handling other signed integer types.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@125240 91177308-0d34-0410-b5e6-96231b3b80d8
5aad3f5581aec9ee62277d92b11cba7abf837dbd 02-Feb-2011 Greg Clayton <gclayton@apple.com> Added missing return statement (patch from Kirk Beitz).

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@124706 91177308-0d34-0410-b5e6-96231b3b80d8
9353338e34d711856c80754721fe425bc765c6f3 27-Jan-2011 Greg Clayton <gclayton@apple.com> Improved support for GCC complex integers.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@124371 91177308-0d34-0410-b5e6-96231b3b80d8
d5b3c351ea23e8e36d47056e50b1df773ae9050a 27-Jan-2011 Sean Callanan <scallanan@apple.com> Updated Clang to a version that supports propagating
the "virtual" flag when importing a C++ function
declaration. Made changes to LLDB to support other
changes in Clang.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@124355 91177308-0d34-0410-b5e6-96231b3b80d8
bdcb6abaa287df2c5f312c51d993c1d0b0cb120c 26-Jan-2011 Greg Clayton <gclayton@apple.com> Enabled extra warnings and fixed a bunch of small issues.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@124250 91177308-0d34-0410-b5e6-96231b3b80d8
a4881d04b4f367c67e34e8040e1257fc222a8b41 22-Jan-2011 Greg Clayton <gclayton@apple.com> Sped up the shutdown time on MacOSX by quite a bit by making sure any
threads that we spawn let us know when they are going away and that we
don't timeout waiting for a message from threads that have gone away.
We also now don't expect the "k" packet (kill) to send a response. This
greatly speeds up debugger shutdown performance. The test suite now runs
quite a bit faster.

Added a fix to the variable display code that fixes the display of
base classes. We were assuming the virtual or normal base class offsets
were being given in bit sizes, but they were being given as character
sizes, so we needed to multiply the offset by 8. This wasn't affecting
the expression parser, but it was affecting the correct display of C++
class base classes and all of their children.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@124024 91177308-0d34-0410-b5e6-96231b3b80d8
00c3ae7dac4cf9654d1569735c41e58fb2fd8969 21-Jan-2011 Greg Clayton <gclayton@apple.com> Fixed up the SBValue::GetExpressionPath() to be more correct under more

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@123957 91177308-0d34-0410-b5e6-96231b3b80d8
7a183dc05d0b860e5b4b523f27e2a9804e49af62 20-Jan-2011 Greg Clayton <gclayton@apple.com> Fixed the auto completion of objective C types with the new ExternalASTSource
changes that recently happened.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@123881 91177308-0d34-0410-b5e6-96231b3b80d8
ad29309ac7a29db2cc363bd4ace20fbf862a42d3 19-Jan-2011 Sean Callanan <scallanan@apple.com> Updated to revision 123723 of LLVM, to bring in
support for minimal type import functionality.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@123787 91177308-0d34-0410-b5e6-96231b3b80d8
864bfdb96d427a67e585db047fea14eb15fe42a7 18-Jan-2011 Sean Callanan <scallanan@apple.com> Quick fixes to set access specifiers for Typedefs
and Enums inside classes.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@123710 91177308-0d34-0410-b5e6-96231b3b80d8
215ce008278a9700eb6cc1781f5f6c3560e07b79 17-Jan-2011 Greg Clayton <gclayton@apple.com> Removed commented out code since it was incorrect code to begin with and we don't want anyone thinking they should put it back in.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@123672 91177308-0d34-0410-b5e6-96231b3b80d8
e74b403485ee7191085acaca03efdff0949665dc 17-Jan-2011 Sean Callanan <scallanan@apple.com> Fixed a bug which would trigger an assert() in LLDB;
we were setting a forward-declared Objective-C class
type as being completed using an ExternalSemaSource,
but this is neither legal nor necessary.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@123671 91177308-0d34-0410-b5e6-96231b3b80d8
b01000fd063629facd45044f137446fb748ee179 17-Jan-2011 Greg Clayton <gclayton@apple.com> A few of the issue I have been trying to track down and fix have been due to
the way LLDB lazily gets complete definitions for types within the debug info.
When we run across a class/struct/union definition in the DWARF, we will only
parse the full definition if we need to. This works fine for top level types
that are assigned directly to variables and arguments, but when we have a
variable with a class, lets say "A" for this example, that has a member:
"B *m_b". Initially we don't need to hunt down a definition for this class
unless we are ever asked to do something with it ("expr m_b->getDecl()" for
example). With my previous approach to lazy type completion, we would be able
to take a "A *a" and get a complete type for it, but we wouldn't be able to
then do an "a->m_b->getDecl()" unless we always expanded all types within a
class prior to handing out the type. Expanding everything is very costly and
it would be great if there were a better way.

A few months ago I worked with the llvm/clang folks to have the
ExternalASTSource class be able to complete classes if there weren't completed

class ExternalASTSource {

virtual void
CompleteType (clang::TagDecl *Tag);

virtual void
CompleteType (clang::ObjCInterfaceDecl *Class);

This was great, because we can now have the class that is producing the AST
(SymbolFileDWARF and SymbolFileDWARFDebugMap) sign up as external AST sources
and the object that creates the forward declaration types can now also
complete them anywhere within the clang type system.

This patch makes a few major changes:
- lldb_private::Module classes now own the AST context. Previously the TypeList
objects did.
- The DWARF parsers now sign up as an external AST sources so they can complete
- All of the pure clang type system wrapper code we have in LLDB (ClangASTContext,
ClangASTType, and more) can now be iterating through children of any type,
and if a class/union/struct type (clang::RecordType or ObjC interface)
is found that is incomplete, we can ask the AST to get the definition.
- The SymbolFileDWARFDebugMap class now will create and use a single AST that
all child SymbolFileDWARF classes will share (much like what happens when
we have a complete linked DWARF for an executable).

We will need to modify some of the ClangUserExpression code to take more
advantage of this completion ability in the near future. Meanwhile we should
be better off now that we can be accessing any children of variables through
pointers and always be able to resolve the clang type if needed.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@123613 91177308-0d34-0410-b5e6-96231b3b80d8
e52f37baba95cc60d2fc78d9f8726dff5c3f3720 15-Jan-2011 Greg Clayton <gclayton@apple.com> Added complete complex support for displaying and parsing complex types.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@123509 91177308-0d34-0410-b5e6-96231b3b80d8
0d62dfd4974eb23f550f992e594894b96c5696d1 14-Jan-2011 Greg Clayton <gclayton@apple.com> Fixed an error in the type map for "char **" that was a bad memory smasher.
Anytime we had a valid python list that was trying to go from Python down into
our C++ API, it was allocating too little memory and it ended up smashing
whatever was next to the allocated memory.

Added typemap conversions for "void *, size_t" so we can get
SBProcess::ReadMemory() working. Also added a typemap for "const void *, size_t"
so we can get SBProcess::WriteMemory() to work.

Fixed an issue in the DWARF parser where we weren't correctly calculating the
DeclContext for all types and classes. We now should be a lot more accurate.
Fixes include: enums should now be setting their parent decl context correctly.
We saw a lot of examples where enums in classes were not being properly
namespace scoped. Also, classes within classes now get properly scoped.

Fixed the objective C runtime pointer checkers to let "nil" pointers through
since these are accepted by compiled code. We also now don't call "abort()"
when a pointer doesn't validate correctly since this was wreaking havoc on
the process due to the way abort() works. We now just dereference memory
which should give us an exception from which we can easily and reliably

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@123428 91177308-0d34-0410-b5e6-96231b3b80d8
6a92553d2cc2b7a3b853fcb6da101583435c2dc0 13-Jan-2011 Sean Callanan <scallanan@apple.com> Implemented a major overhaul of the way variables are handled
by LLDB. Instead of being materialized into the input structure
passed to the expression, variables are left in place and pointers
to them are materialzied into the structure. Variables not resident
in memory (notably, registers) get temporary memory regions allocated
for them.

Persistent variables are the most complex part of this, because they
are made in various ways and there are different expectations about
their lifetime. Persistent variables now have flags indicating their
status and what the expectations for longevity are. They can be
marked as residing in target memory permanently -- this is the
default for result variables from expressions entered on the command
line and for explicitly declared persistent variables (but more on
that below). Other result variables have their memory freed.

Some major improvements resulting from this include being able to
properly take the address of variables, better and cleaner support
for functions that return references, and cleaner C++ support in
general. One problem that remains is the problem of explicitly
declared persistent variables; I have not yet implemented the code
that makes references to them into indirect references, so currently
materialization and dematerialization of these variables is broken.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@123371 91177308-0d34-0410-b5e6-96231b3b80d8
9db023bd392ede8fc4c92d7dfee64382e08bbd78 08-Jan-2011 Greg Clayton <gclayton@apple.com> Make sure we don't assert if we have a child with zero byte size. Also
we now say that "void *" value objects don't have children.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@123092 91177308-0d34-0410-b5e6-96231b3b80d8
c3b61d239a53271d013b82ffaba6ab4e92b7fcc1 15-Dec-2010 Greg Clayton <gclayton@apple.com> Fixed the "expression" command object to use the StackFrame::GetValueForExpressionPath()
function and also hooked up better error reporting for when things fail.

Fixed issues with trying to display children of pointers when none are
supposed to be shown (no children for function pointers, and more like this).
This was causing child value objects to be made that were correctly firing
an assertion.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@121841 91177308-0d34-0410-b5e6-96231b3b80d8
427f290ff96f3ab9f2cf3a1af7001d2c560424c7 14-Dec-2010 Greg Clayton <gclayton@apple.com> Modified LLDB expressions to not have to JIT and run code just to see variable
values or persistent expression variables. Now if an expression consists of
a value that is a child of a variable, or of a persistent variable only, we
will create a value object for it and make a ValueObjectConstResult from it to
freeze the value (for program variables only, not persistent variables) and
avoid running JITed code. For everything else we still parse up and JIT code
and run it in the inferior.

There was also a lot of clean up in the expression code. I made the
ClangExpressionVariables be stored in collections of shared pointers instead
of in collections of objects. This will help stop a lot of copy constructors on
these large objects and also cleans up the code considerably. The persistent
clang expression variables were moved over to the Target to ensure they persist
across process executions.

Added the ability for lldb_private::Target objects to evaluate expressions.
We want to evaluate expressions at the target level in case we aren't running
yet, or we have just completed running. We still want to be able to access the
persistent expression variables between runs, and also evaluate constant

Added extra logging to the dynamic loader plug-in for MacOSX. ModuleList objects
can now dump their contents with the UUID, arch and full paths being logged with
appropriate prefix values.

Thread hardened the Communication class a bit by making the connection auto_ptr
member into a shared pointer member and then making a local copy of the shared
pointer in each method that uses it to make sure another thread can't nuke the
connection object while it is being used by another thread.

Added a new file to the lldb/test/load_unload test that causes the test a.out file
to link to the libd.dylib file all the time. This will allow us to test using
the DYLD_LIBRARY_PATH environment variable after moving libd.dylib somewhere else.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@121745 91177308-0d34-0410-b5e6-96231b3b80d8
9e7958e3d89fbcb8128bd224161cdccd3bf4ad9d 13-Dec-2010 Sean Callanan <scallanan@apple.com> Updated to latest Clang revision. This involved
very minor changes, changing how we get the target
type from a TypedefType, adding a parameter to
EnumDecl::Create(), and other minor tweaks.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@121663 91177308-0d34-0410-b5e6-96231b3b80d8
887d25180c9ebe10513654baa96bfb31f7f1f260 11-Dec-2010 Sean Callanan <scallanan@apple.com> Made all LLDB-generated ASTContexts have valid
DiagnosticClients, and removed code that was patching
over the original problem.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@121601 91177308-0d34-0410-b5e6-96231b3b80d8
494735debedd2ed3d9cf3ff0b6f8373232ae0d8d 10-Dec-2010 Sean Callanan <scallanan@apple.com> Simplified the code that handles overloaded
operator names.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@121511 91177308-0d34-0410-b5e6-96231b3b80d8
c2c9a149f127736550d7430653f4c1a51731442e 10-Dec-2010 Sean Callanan <scallanan@apple.com> Fixed detection of overloaded operators in type
information. Previously, "operator[]" was not
being recognized because the detector was looking
for "operator " as a prefix. Now we handle both

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@121456 91177308-0d34-0410-b5e6-96231b3b80d8
829075808ac0a804673ab4752b21885b63253b0b 08-Dec-2010 Sean Callanan <scallanan@apple.com> Fixed a problem where the AST importer would assert()
because the diagnostic client for one of the AST
contexts is NULL. Now we provide a form of Miranda
rights to AST contexts: they are provided with a very
simple diagnostic client if they do not have one

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@121225 91177308-0d34-0410-b5e6-96231b3b80d8
c4217a663232c014ee054f55bd90ece79803c963 07-Dec-2010 Sean Callanan <scallanan@apple.com> Fixes to make id work as well as well as fix minor errors
when calling built-ins.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@121070 91177308-0d34-0410-b5e6-96231b3b80d8
22defe8b06df5b1f09b53bda255ef07513abc04c 03-Dec-2010 Greg Clayton <gclayton@apple.com> Updated to latest LLVM/Clang for external AST source changes that allow
TagDecl subclasses and Objective C interfaces to complete themselves through
the ExternalASTSource class.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@120749 91177308-0d34-0410-b5e6-96231b3b80d8
ba4fc4ab601abe30ee681b4ae2ca6f955a8139c7 20-Nov-2010 Sean Callanan <scallanan@apple.com> Removed a stray dump() that made it into top-of-tree.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@119890 91177308-0d34-0410-b5e6-96231b3b80d8
eae91241c959357e5e867cfb257e762574b68dd6 19-Nov-2010 Greg Clayton <gclayton@apple.com> Updated to latest and greatest clang for a "print cvr-qualifiers on function
declarations" fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@119847 91177308-0d34-0410-b5e6-96231b3b80d8
a91dd997b1e809c67901b7ac481942cacae19150 19-Nov-2010 Sean Callanan <scallanan@apple.com> Added support for indicating to the expression parser
that the result of an expression should be coerced to
a specific type. Also made breakpoint conditions pass
in the bool type for this type.

The expression parser ignores this indication for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@119779 91177308-0d34-0410-b5e6-96231b3b80d8
8a3b0a85dd512824f528cfa55d93f530ebe38be8 18-Nov-2010 Sean Callanan <scallanan@apple.com> Updated to the LLVM/Clang of 2010-11-17 at 3:30pm.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@119677 91177308-0d34-0410-b5e6-96231b3b80d8
6916e358c9725b75ed91f31236c147f26c9af10e 13-Nov-2010 Greg Clayton <gclayton@apple.com> Modified the lldb_private::Type clang type resolving code to handle three
cases when getting the clang type:
- need only a forward declaration
- need a clang type that can be used for layout (members and args/return types)
- need a full clang type

This allows us to partially parse the clang types and be as lazy as possible.
The first case is when we just need to declare a type and we will complete it
later. The forward declaration happens only for class/union/structs and enums.
The layout type allows us to resolve the full clang type _except_ if we have
any modifiers on a pointer or reference (both R and L value). In this case
when we are adding members or function args or return types, we only need to
know how the type will be laid out and we can defer completing the pointee
type until we later need it. The last type means we need a full definition for
the clang type.

Did some renaming of some enumerations to get rid of the old "DC" prefix (which
stands for DebugCore which is no longer around).

Modified the clang namespace support to be almost ready to be fed to the
expression parser. I made a new ClangNamespaceDecl class that can carry around
the AST and the namespace decl so we can copy it into the expression AST. I
modified the symbol vendor and symbol file plug-ins to use this new class.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@118976 91177308-0d34-0410-b5e6-96231b3b80d8
53d287bda5182511685a1dc7961a54b30bf3eedc 11-Nov-2010 Greg Clayton <gclayton@apple.com> Fixed an issue where we might not be able to track down a real definition of
a forward declaration to a struct and hangle it gracefully (don't crash
trying to ask clang how many children an empty record has).

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@118770 91177308-0d34-0410-b5e6-96231b3b80d8
cf18faaf72090a68480145ca206955d792633559 09-Nov-2010 Sean Callanan <scallanan@apple.com> Added a named container for the source QualType
in the type copy routine to make type problems
easier to debug.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@118638 91177308-0d34-0410-b5e6-96231b3b80d8
23cf0c7880761e2546c1a83920d82a46e0ade837 08-Nov-2010 Greg Clayton <gclayton@apple.com> Cleaned up the pseudo terminal code in ProcessGDBRemote as it was spawning
a pseudo terminal even when the process being attached to.

Fixed a possible crasher in the in:

ClangASTContext::IsAggregateType (clang_type_t clang_type);

It seems that if you pass in a record decl, enum decl, or objc class decl
and ask it if it is an aggregate type, clang will crash.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@118404 91177308-0d34-0410-b5e6-96231b3b80d8
e005f2ce03c489ebde9110678a29cbfe8488d5b4 06-Nov-2010 Greg Clayton <gclayton@apple.com> Modified all logging calls to hand out shared pointers to make sure we
don't crash if we disable logging when some code already has a copy of the
logger. Prior to this fix, logs were handed out as pointers and if they were
held onto while a log got disabled, then it could cause a crash. Now all logs
are handed out as shared pointers so this problem shouldn't happen anymore.
We are also using our new shared pointers that put the shared pointer count
and the object into the same allocation for a tad better performance.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@118319 91177308-0d34-0410-b5e6-96231b3b80d8
8ff5d55184d7c491d9c0d34a717264ab10396138 02-Nov-2010 Greg Clayton <gclayton@apple.com> Fixed cases where we were translating "long long" types to use the "long"
types when they are the same size. The new code will use the correct type
now when converting DWARF built-in types into clang types.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@118003 91177308-0d34-0410-b5e6-96231b3b80d8
8950c9a1faa1eb762d92ccdc860dc2eaa88a6868 29-Oct-2010 Sean Callanan <scallanan@apple.com> Updated LLVM to latest version as of 10/28 at
7pm, and made minor integration fixes.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@117680 91177308-0d34-0410-b5e6-96231b3b80d8
ad5b61b871bace8dd7b28862662ed7f165d47267 28-Oct-2010 Sean Callanan <scallanan@apple.com> Explicatory comment for folks that may not be
familiar with the ownership relationships
involving Diagnostic.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@117573 91177308-0d34-0410-b5e6-96231b3b80d8
839fde455820d7758685f5eb2257a83e96ca68d2 28-Oct-2010 Sean Callanan <scallanan@apple.com> Logging fixes. Added a simple class to handle
logging for type importing, making errors much
easier to diagnose. Also removed some Objective-C
related logging.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@117568 91177308-0d34-0410-b5e6-96231b3b80d8
6bc44a42f193a4b4b66d73587f742aaa51da2ac3 27-Oct-2010 Greg Clayton <gclayton@apple.com> Don't include the ":" character when building the selector identifiers
when making objective C classes from the DWARF.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@117438 91177308-0d34-0410-b5e6-96231b3b80d8
f3d0b0c8081691128626eb496fdfcbf8ae54c1de 27-Oct-2010 Greg Clayton <gclayton@apple.com> Updated the lldb_private::Flags class to have better method names and made
all of the calls inlined in the header file for better performance.

Fixed the summary for C string types (array of chars (with any combo if
modifiers), and pointers to chars) work in all cases.

Fixed an issue where a forward declaration to a clang type could cause itself
to resolve itself more than once if, during the resolving of the type itself
it caused something to try and resolve itself again. We now remove the clang
type from the forward declaration map in the DWARF parser when we start to
resolve it and avoid this additional call. This should stop any duplicate
members from appearing and throwing all the alignment of structs, unions and

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@117437 91177308-0d34-0410-b5e6-96231b3b80d8
04325065a00f646527db85e9bc751da29ac53b23 25-Oct-2010 Sean Callanan <scallanan@apple.com> Fixes to Objective-C built-in type handling.

Specifically, we fixed handling of the objc_class
built-in type, which allowed us to pass
named Objective-C objects to functions,
call variable list -t on objects safely, etc.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@117249 91177308-0d34-0410-b5e6-96231b3b80d8
bf8e42b9da0e1c6349a727d644ad37610b00d556 15-Oct-2010 Greg Clayton <gclayton@apple.com> Fixed an expression parsing issue where if you were stopped somewhere without
debug information and you evaluated an expression, a crash would occur as a
result of an unchecked pointer.

Added the ability to get the expression path for a ValueObject. For a rectangle
point child "x" the expression path would be something like: "rect.top_left.x".
This will allow GUI and command lines to get ahold of the expression path for
a value object without having to explicitly know about the hierarchy. This
means the ValueObject base class now has a "ValueObject *m_parent;" member.
All ValueObject subclasses now correctly track their lineage and are able
to provide value expression paths as well.

Added a new "--flat" option to the "frame variable" to allow for flat variable
output. An example of the current and new outputs:

(lldb) frame variable
argc = 1
argv = 0x00007fff5fbffe80
pt = {
x = 2
y = 3
rect = {
bottom_left = {
x = 1
y = 2
top_right = {
x = 3
y = 4
(lldb) frame variable --flat
argc = 1
argv = 0x00007fff5fbffe80
pt.x = 2
pt.y = 3
rect.bottom_left.x = 1
rect.bottom_left.y = 2
rect.top_right.x = 3
rect.top_right.y = 4

As you can see when there is a lot of hierarchy it can help flatten things out.
Also if you want to use a member in an expression, you can copy the text from
the "--flat" output and not have to piece it together manually. This can help
when you want to use parts of the STL in expressions:

(lldb) frame variable --flat
argc = 1
argv = 0x00007fff5fbffea8
hello_world._M_dataplus._M_p = 0x0000000000000000
(lldb) expr hello_world._M_dataplus._M_p[0] == '\0'

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@116532 91177308-0d34-0410-b5e6-96231b3b80d8
48fbdf7ffd3c5e28e7b954ed92345c1c45256109 12-Oct-2010 Greg Clayton <gclayton@apple.com> Modified the "breakpoint set --name NAME" to be the auto breakpoint set
function. It will inspect NAME and do the following:
- if the name contains '(' or starts with "-[" or "+[" then a full name search
will happen to match full function names with args (C++ demangled names) or
full objective C method prototypes.
- if the name contains "::" and no '(', then it is assumed to be a qualified
function name that is in a namespace or class. For "foo::bar::baz" we will
search for any functions with the basename or method name of "baz", then
filter the results to only those that contain "foo::bar::baz". This allows
setting breakpoint on C++ functions and methods without having to fully
qualify all of the types that would appear in C++ mangled names.
- if the name contains ":" (not "::"), then NAME is assumed to be an ObjC
_ otherwise, we assume just a plain function basename.

Now that "--name" is our "auto" mode, I introduced the new "--basename" option
("breakpoint set --basename NAME") to allow for function names that aren't
methods or selectors, just basenames. This can also be used to ignore C++
namespaces and class hierarchies for class methods.

Fixed clang enumeration promotion types to be correct.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@116293 91177308-0d34-0410-b5e6-96231b3b80d8
ad60bf486dee699dd524225b63271ddc5b6329b9 12-Oct-2010 Greg Clayton <gclayton@apple.com> Fixed the Objective C method prototypes to be correct (the selectors weren't
being chopped up correctly). The DWARF plug-in also keeps a map of the ObjC
class names to selectors for easy parsing of all class selectors when we parse
the class type.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@116290 91177308-0d34-0410-b5e6-96231b3b80d8
306edcaab871503192162272c147aef89d0ee719 11-Oct-2010 Greg Clayton <gclayton@apple.com> Fixed an issue where objc types weren't ever getting fully resolved (beyond
forward declarations).

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@116181 91177308-0d34-0410-b5e6-96231b3b80d8
5325a360f3e7ca7bd053aa75e828953105d10069 02-Oct-2010 Greg Clayton <gclayton@apple.com> One final patch for all of this class constructor, destructor, and conversion
operator naming stuff. We now get the constructor and destructor names right
after passing in the type, and we get the correct conversion operator name
after passing in the return type when getting the DeclarationNameInfo.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@115398 91177308-0d34-0410-b5e6-96231b3b80d8
dbf26158d1a50a1ff46e97e92481fc4d19c8ec98 02-Oct-2010 Greg Clayton <gclayton@apple.com> Get the declaration names for C++ ctors, dtors, and operators from the
right name pools.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@115371 91177308-0d34-0410-b5e6-96231b3b80d8
90e325d6aefb5e85c31982a745c4147b50dcac3c 01-Oct-2010 Greg Clayton <gclayton@apple.com> Added correct C++ method declarations for destructors and for conversion

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@115290 91177308-0d34-0410-b5e6-96231b3b80d8
30449d50f5328ca745d09d943b7e3b1ba41bff08 01-Oct-2010 Greg Clayton <gclayton@apple.com> Make C++ constructors and destructors correctly within the clang types we
generate from DWARF.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@115268 91177308-0d34-0410-b5e6-96231b3b80d8
55b6c534bb14111eb371d0665c3e3063769acdc9 29-Sep-2010 Greg Clayton <gclayton@apple.com> Updated LLVM to: --revision '{2010-09-28T19:30}'

This gets us the new clang::CXXRecordDecl improvments in clang so that when we
add fields, methods and other things to the clang::CXXRecordDecl, the correct
bits are automatically set by clang::CXXRecordDecl itself instead of having
SEMA and our lldb_private::ClangASTContext functions that create types for
DWARF do it all manually. This allows the clang::ASTContext deep copying of
types to work correctly and it means that the expression parser can now
evaluate expressions in the context of a class method correctly. Previously
when a class was copied from the DWARF generated ASTContext over into the
expression ASTContext, we were losing CXXRecordDecl bits in the conversion
which caused all classes to think they were at offset zero because the the
bools for empty, POD, and others would end up being incorrect.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@115023 91177308-0d34-0410-b5e6-96231b3b80d8
462d4147f3bb9141bf62d904f58a623db00669df 29-Sep-2010 Greg Clayton <gclayton@apple.com> Fixed the forward declaration issue that was present in the DWARF parser after
adding methods to C++ and objective C classes. In order to make methods, we
need the function prototype which means we need the arguments. Parsing these
could cause a circular reference that caused an assertion.

Added a new typedef for the clang opaque types which are just void pointers:
lldb::clang_type_t. This appears in lldb-types.h.

This was fixed by enabling struct, union, class, and enum types to only get
a forward declaration when we make the clang opaque qual type for these
types. When they need to actually be resolved, lldb_private::Type will call
a new function in the SymbolFile protocol to resolve a clang type when it is
not fully defined (clang::TagDecl::getDefinition() returns NULL). This allows
us to be a lot more lazy when parsing clang types and keeps down the amount
of data that gets parsed into the ASTContext for each module.

Getting the clang type from a "lldb_private::Type" object now takes a boolean
that indicates if a forward declaration is ok:

clang_type_t lldb_private::Type::GetClangType (bool forward_decl_is_ok);

So function prototypes that define parameters that are "const T&" can now just
parse the forward declaration for type 'T' and we avoid circular references in
the type system.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@115012 91177308-0d34-0410-b5e6-96231b3b80d8
974fddb5c78e9a754f0894c99a70ed777a8548c3 28-Sep-2010 Johnny Chen <johnny.chen@apple.com> Fix from Jean-Daniel. Thanks.

Error in object runtime language detection code (spurious '; ')
Also replace false by NULL in a place where the compiler expects a pointer instead of a bool.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@114957 91177308-0d34-0410-b5e6-96231b3b80d8
1d8173f1b622482bd6610cc34ffd5668b75cf7bd 24-Sep-2010 Greg Clayton <gclayton@apple.com> Added the ability to create an objective C method for an objective C
interface in ClangASTContext. Also added two bool returning functions that
indicated if an opaque clang qual type is a CXX class type, and if it is an
ObjC class type.

Objective C classes now will get their methods added lazily as they are
encountered. The reason for this is currently, unlike C++, the
DW_TAG_structure_type and owns the ivars, doesn't not also contain the
member functions. This means when we parse the objective C class interface
we either need to find all functions whose names start with "+[CLASS_NAME"
or "-[CLASS_NAME" and add them all to the class, or when we parse each objective
C function, we slowly add it to the class interface definition. Since objective
C's class doesn't change internal bits according to whether it has certain types
of member functions (like C++ does if it has virtual functions, or if it has
user ctors/dtors), I currently chose to lazily populate the class when each
functions is parsed. Another issue we run into with ObjC method declarations
is the "self" and "_cmd" implicit args are not marked as artificial in the
DWARF (DW_AT_artifical), so we currently have to look for the parameters by
name if we are trying to omit artificial function args if the language of the
compile unit is ObjC or ObjC++.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@114722 91177308-0d34-0410-b5e6-96231b3b80d8
47a5c4c01066ece2d41cba56c3a065eeca12d47c 23-Sep-2010 Sean Callanan <scallanan@apple.com> Updated to latest LLVM. Major LLVM changes:

- Sema is now exported (and there was much rejoicing.)

- Storage classes are now centrally defined.

Also fixed some bugs that the new LLVM picked up.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@114622 91177308-0d34-0410-b5e6-96231b3b80d8
412440aa3a110e4068ee99729f7883c828fb3dce 23-Sep-2010 Greg Clayton <gclayton@apple.com> Added motheds to C++ classes as we parse them to keep clang happy.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@114616 91177308-0d34-0410-b5e6-96231b3b80d8
a4e27afe72b9b918cea837e5b8b293e8edfe1555 22-Sep-2010 Greg Clayton <gclayton@apple.com> Added some comments explaining why we currently have to manually set CXXRecordDecl variables. This is because SEMA is actually calling the accessors that should be built into the CXXRecordDecl class. We have an internal bug tracking this change and will remove the affected work around code when a solution is available.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@114516 91177308-0d34-0410-b5e6-96231b3b80d8
22d5fe3efb43c7ad76e12cfd764848f7103f6a8c 22-Sep-2010 Greg Clayton <gclayton@apple.com> Fixed CXXRecordDecl declaration settings for whether a class in a POD type
or not.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@114512 91177308-0d34-0410-b5e6-96231b3b80d8
bba60fbd151ff3c36719c35e7bcb0fdfb0dd9ebc 21-Sep-2010 Greg Clayton <gclayton@apple.com> Fixed an issue with the clang type creation code for C++ classes where we wouldn't set a CXXRecordDecl to be NOT empty if we had base classes that were not empty or had virtual functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@114484 91177308-0d34-0410-b5e6-96231b3b80d8
3c9c5eb466869ede185e879d14a47335fb43194d 21-Sep-2010 Sean Callanan <scallanan@apple.com> Removed the hacky "#define this ___clang_this" handler
for C++ classes. Replaced it with a less hacky approach:

- If an expression is defined in the context of a
method of class A, then that expression is wrapped as
___clang_class::___clang_expr(void*) { ... }
instead of ___clang_expr(void*) { ... }.

- ___clang_class is resolved as the type of the target
of the "this" pointer in the method the expression
is defined in.

- When reporting the type of ___clang_class, a method
with the signature ___clang_expr(void*) is added to
that class, so that Clang doesn't complain about a
method being defined without a corresponding

- Whenever the expression gets called, "this" gets
looked up, type-checked, and then passed in as the
first argument.

This required the following changes:

- The ABIs were changed to support passing of the "this"
pointer as part of trivial calls.

- ThreadPlanCallFunction and ClangFunction were changed
to support passing of an optional "this" pointer.

- ClangUserExpression was extended to perform the
wrapping described above.

- ClangASTSource was changed to revert the changes
required by the hack.

- ClangExpressionParser, IRForTarget, and
ClangExpressionDeclMap were changed to handle
different manglings of ___clang_expr flexibly. This
meant no longer searching for a function called
___clang_expr, but rather looking for a function whose
name *contains* ___clang_expr.

- ClangExpressionParser and ClangExpressionDeclMap now
remember whether "this" is required, and know how to
look it up as necessary.

A few inheritance bugs remain, and I'm trying to resolve
these. But it is now possible to use "this" as well as
refer implicitly to member variables, when in the proper

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@114384 91177308-0d34-0410-b5e6-96231b3b80d8
823533e4fd5124e7d5dd26198a50bf9362317a5d 18-Sep-2010 Greg Clayton <gclayton@apple.com> Bug #: 8447030

Fixed an issue with ClangASTContext::GetIndexOfChildMemberWithName()
where objective C ivars were not being found correctly if they were
the second or higher child.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@114258 91177308-0d34-0410-b5e6-96231b3b80d8
795230029c9c8ff35c167ee5f548b1b373b89c33 17-Sep-2010 Sean Callanan <scallanan@apple.com> Re-committed AddMethodToCXXRecordType, now that
the bug I introduced to ClangASTContext is

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@114157 91177308-0d34-0410-b5e6-96231b3b80d8
a751f7b1baa037ab6e9398f7bf5eb3a36a84e984 17-Sep-2010 Sean Callanan <scallanan@apple.com> Added a static function to get the void type for
an ASTContext; also added a function to get the
Clang-style CVR qualifiers for a type as an
unsigned int.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@114152 91177308-0d34-0410-b5e6-96231b3b80d8
ca4a1822367c7090498ee99a0ee297c76023df68 17-Sep-2010 Johnny Chen <johnny.chen@apple.com> Reverted r114125, r114124, and r114123 as it broke the test suite - segfaults
when running test/class_types.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@114132 91177308-0d34-0410-b5e6-96231b3b80d8
d7d82d4c068b7dfadbac818f46dbc11c0f623c81 17-Sep-2010 Sean Callanan <scallanan@apple.com> Added AddMethodToCXXRecordType. This is not yet
tested, but I'm committing because it's not used
anywhere and I want to avoid conflicts.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@114123 91177308-0d34-0410-b5e6-96231b3b80d8
2ea8f27fe76e30ba8fff1f58a50ad3e409e8a8ba 16-Sep-2010 Sean Callanan <scallanan@apple.com> Made CreateFunctionType static. Also fixed the spelling
for CreateParameterDeclaration.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@114111 91177308-0d34-0410-b5e6-96231b3b80d8
60a0ced7da29dbe746115d7ae3498c0e1af5d58a 16-Sep-2010 Sean Callanan <scallanan@apple.com> Made AddFieldToRecordType a static method on

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@114110 91177308-0d34-0410-b5e6-96231b3b80d8
03e0f97cfa469792dd69b36f782d33a014225788 13-Sep-2010 Greg Clayton <gclayton@apple.com> Added the summary values for function pointers so we can show where they
point to.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@113735 91177308-0d34-0410-b5e6-96231b3b80d8
e37f23c664f91f38b77029159b29dc62ca19bcb0 13-Sep-2010 Greg Clayton <gclayton@apple.com> Fixed a crash that would happen when using "frame variables" on any struct,
union, or class that contained an enumeration type. When I was creating
the clang enumeration decl, I wasn't calling "EnumDecl::setIntegerType (QualType)"
which means that if the enum decl was ever asked to figure out it's bit width
(getTypeInfo()) it would crash. We didn't run into this with enum types that
weren't inside classes because the DWARF already told us how big the type was
and when we printed an enum we would never need to calculate the size, we
would use the pre-cached byte size we got from the DWARF. When the enum was
in a struct/union/class and we tried to layout the struct, the layout code
would attempt to get the type info and segfault.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@113729 91177308-0d34-0410-b5e6-96231b3b80d8
585660cc442f7faf8d2cbd936e4c92ac689c30e5 05-Aug-2010 Greg Clayton <gclayton@apple.com> More missing files from my previous checkin.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@110299 91177308-0d34-0410-b5e6-96231b3b80d8
960d6a40711f05effe6fcc5b66f0952450f79ea2 03-Aug-2010 Greg Clayton <gclayton@apple.com> Added support for objective C built-in types: id, Class, and SEL. This
involved watching for the objective C built-in types in DWARF and making sure
when we convert the DWARF types into clang types that we use the appropriate
ASTContext types.

Added a way to find and dump types in lldb (something equivalent to gdb's
"ptype" command):

image lookup --type <TYPENAME>

This only works for looking up types by name and won't work with variables.
It also currently dumps out verbose internal information. I will modify it
to dump more appropriate user level info in my next submission.

Hookup up the "FindTypes()" functions in the SymbolFile and SymbolVendor so
we can lookup types by name in one or more images.

Fixed "image lookup --address <ADDRESS>" to be able to correctly show all
symbol context information, but it will only show this extra information when
the new "--verbose" flag is used.

Updated to latest LLVM to get a few needed fixes.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@110089 91177308-0d34-0410-b5e6-96231b3b80d8
6e71340988075f55c85e8bfcbc503ceaceb157c7 30-Jul-2010 Greg Clayton <gclayton@apple.com> Updated to llvm/clang from July 30, 2010 at 08:00.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@109887 91177308-0d34-0410-b5e6-96231b3b80d8
b63cbd458640aa6cb66e45b96c6cc4a1a6500b00 29-Jul-2010 Greg Clayton <gclayton@apple.com> Removed pending TODOs after resolving them with help of the clang folks and the discussion list.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@109802 91177308-0d34-0410-b5e6-96231b3b80d8
7b54103814527f5eeaa022d1a8a20cf8d2d864e5 29-Jul-2010 Greg Clayton <gclayton@apple.com> Fixed "void *ClangASTContext::CreatePointerType (void *clang_type);" to return objective C pointers for clang::Type::TypeClass types that are "clang::Type::ObjCObject" and "clang::Type::ObjCInterface" .

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@109795 91177308-0d34-0410-b5e6-96231b3b80d8
9488b7423b556c7c777b721d2094fd5ec4a47578 28-Jul-2010 Greg Clayton <gclayton@apple.com> Created lldb::LanguageType by moving an enumeration from the
lldb_private::Language class into the enumerations header so it can be freely
used by other interfaces.

Added correct objective C class support to the DWARF symbol parser. Prior to
this fix we were parsing objective C classes as C++ classes and now that the
expression parser is ready to call functions we need to make sure the objective
C classes have correct AST types.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@109574 91177308-0d34-0410-b5e6-96231b3b80d8
f8e98a6e4560c632a9c0373abee247e747097845 23-Jul-2010 Greg Clayton <gclayton@apple.com> Warnings cleanup patch from Jean-Daniel Dupas.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@109226 91177308-0d34-0410-b5e6-96231b3b80d8
84f8075072eef306234f8109573067647735c111 22-Jul-2010 Greg Clayton <gclayton@apple.com> Added a new enumeration named "ClangASTContext::AccessType" that abstracts the type creation from the various access enumerations in Clang. Currently there are clang::AccessSpecifier and the objective C ivars have their own enumeration. So I added a new enumeration that will allow a consistent interface when creating types through ClangASTContext.

I also added new functions to create an Objective C class, ivar and set an objective C superclass. They aren't hooked up in the DWARF parser yet. That is the next step, though I am unsure if I will do this in the DWARF parser or try and do it generically in the existing Record manipulation functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@109130 91177308-0d34-0410-b5e6-96231b3b80d8
1674b12bbc3dae7b9543b8c5f958e90ddc767fa4 22-Jul-2010 Greg Clayton <gclayton@apple.com> Change over to using the definitions for mach-o types and defines to the
defines that are in "llvm/Support/MachO.h". This should allow ObjectFileMachO
and ObjectContainerUniversalMachO to be able to be cross compiled in Linux.

Also did some cleanup on the ASTType by renaming it to ClangASTType and
renaming the header file. Moved a lot of "AST * + opaque clang type *"
functionality from lldb_private::Type over into ClangASTType.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@109046 91177308-0d34-0410-b5e6-96231b3b80d8
53d68e749f0715691a95f23e9490d97e484b15da 21-Jul-2010 Greg Clayton <gclayton@apple.com> Remove use of STL collection class use of the "data()" method since it isn't
part of C++'98. Most of these were "std::vector<T>::data()" and

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@108957 91177308-0d34-0410-b5e6-96231b3b80d8
8d82506a78f7cd8f5d195bf86b7dffaa9ebc06fa 16-Jul-2010 Sean Callanan <scallanan@apple.com> Oops, didn't define AreTypesSame correctly.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@108483 91177308-0d34-0410-b5e6-96231b3b80d8
5510dddc33260a991284ef81ca343594f23262e8 16-Jul-2010 Sean Callanan <scallanan@apple.com> Added a function to test whether two types are
the same.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@108467 91177308-0d34-0410-b5e6-96231b3b80d8
bef1583b89e73de77c8b0897fcf42b5b1fcabe4c 14-Jul-2010 Greg Clayton <gclayton@apple.com> I enabled some extra warnings for hidden local variables and for hidden
virtual functions and caught some things and did some general code cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@108299 91177308-0d34-0410-b5e6-96231b3b80d8
54e7afa84d945f9137f9372ecde432f9e1a702fc 09-Jul-2010 Greg Clayton <gclayton@apple.com> Merged Eli Friedman's linux build changes where he added Makefile files that
enabled LLVM make style building and made this compile LLDB on Mac OS X. We
can now iterate on this to make the build work on both linux and macosx.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@108009 91177308-0d34-0410-b5e6-96231b3b80d8
bc4f0f59ed752f511ceb1afaf5d379cf52014484 08-Jul-2010 Sean Callanan <scallanan@apple.com> Moved NDEBUG from a global setting to a specific

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@107894 91177308-0d34-0410-b5e6-96231b3b80d8
ccfba727178bb919cdff3365839bed9584df2560 07-Jul-2010 Jason Molenda <jmolenda@apple.com> Switch over to using llvm's dwarf constants file.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@107716 91177308-0d34-0410-b5e6-96231b3b80d8
e9d0df45df0ee87623985d1e59947a2ca50c14ea 02-Jul-2010 Greg Clayton <gclayton@apple.com> More leaks detection:
- fixed 3 posix spawn attributes leaks
- fixed us always leaking CXXBaseSpecifier objects when we create class
base classes. Clang apparently copies the base classes we pass in.

Fixed some code formatting in ClangASTContext.cpp.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@107459 91177308-0d34-0410-b5e6-96231b3b80d8
f05633b35544b5d095feb05680c8728be087e441 13-Jun-2010 Eli Friedman <eli.friedman@gmail.com> Add missing stdio.h include; fix include path for ClangASTContext.h.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@105921 91177308-0d34-0410-b5e6-96231b3b80d8
e41c4b2a407ebc4bf7b7452c1f46d194671ec31d 13-Jun-2010 Greg Clayton <gclayton@apple.com> Updated LLVM/Clang to revision from 2010-06-13T06:00.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@105918 91177308-0d34-0410-b5e6-96231b3b80d8
fa97069b86f30aa44bb23a1de506ae220359b4fa 12-Jun-2010 Greg Clayton <gclayton@apple.com> Anders Carlsson patch for member pointers. Thanks Anders.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@105868 91177308-0d34-0410-b5e6-96231b3b80d8
24943d2ee8bfaa7cf5893e4709143924157a5c1e 08-Jun-2010 Chris Lattner <sabre@nondot.org> Initial checkin of lldb code from internal Apple repo.

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@105619 91177308-0d34-0410-b5e6-96231b3b80d8