<feed xmlns='http://www.w3.org/2005/Atom'>
<title>bcm5719-llvm/lldb/source/Plugins/SymbolFile/DWARF/DWARFDIE.h, branch ortega-7.0.1</title>
<subtitle>Project Ortega BCM5719 LLVM</subtitle>
<id>https://git.raptorcs.com/git/bcm5719-llvm/atom?h=ortega-7.0.1</id>
<link rel='self' href='https://git.raptorcs.com/git/bcm5719-llvm/atom?h=ortega-7.0.1'/>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/'/>
<updated>2018-06-04T09:05:27+00:00</updated>
<entry>
<title>AppleDWARFIndex: Get function method-ness directly from debug info</title>
<updated>2018-06-04T09:05:27+00:00</updated>
<author>
<name>Pavel Labath</name>
<email>labath@google.com</email>
</author>
<published>2018-06-04T09:05:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=3ca31ba75a405899bcc3e6a67abd9e9eee0f8666'/>
<id>urn:sha1:3ca31ba75a405899bcc3e6a67abd9e9eee0f8666</id>
<content type='text'>
Summary:
When searching for methods only, we need to do extra work to make sure
the functions we get from the apple tables are indeed methods.
Previously we were resolving the DIE into a SymbolContext and then
checked whether the enclosing CompilerDeclContext is a
class (or struct, or union).

This patch changes that to operate on the debug info directly. This
should be:
- simpler
- faster
- more consistent with the ManualDWARFIndex (which does the same check,
  only at indexing time).

What we lose this ways is for the language plugin to have a say in what
it considers to be a "class", but that's probably more flexibility than
we need (and if we really wanted to do that in the future, we could
implement a more direct way to consult the plugin about this).

This also fixes the find-method-local-struct test, which was failing
because we were not able to construct a CompilerDeclContext for a local
struct correctly.

As a drive-by, I rename the DWARFDIE's IsStructClassOrUnion method to
match the name on the CompilerDeclContext class.

Reviewers: clayborg, JDevlieghere

Subscribers: aprantl, lldb-commits

Differential Revision: https://reviews.llvm.org/D47470

llvm-svn: 333878
</content>
</entry>
<entry>
<title>ManualDWARFIndex: Fix misclassification of methods in unions</title>
<updated>2018-05-25T10:49:11+00:00</updated>
<author>
<name>Pavel Labath</name>
<email>labath@google.com</email>
</author>
<published>2018-05-25T10:49:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=a2aad28f6d18b3d9590cd52d650a4598800ce298'/>
<id>urn:sha1:a2aad28f6d18b3d9590cd52d650a4598800ce298</id>
<content type='text'>
Apple index was already treating them as methods. Not doing the same
seems like an omission.

llvm-svn: 333266
</content>
</entry>
<entry>
<title>DWARFDIE split out to DWARFBaseDIE</title>
<updated>2018-05-24T20:44:48+00:00</updated>
<author>
<name>Jan Kratochvil</name>
<email>jan.kratochvil@redhat.com</email>
</author>
<published>2018-05-24T20:44:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=e522c97ef4e08bb8f32878bc54dc4afed7f248c8'/>
<id>urn:sha1:e522c97ef4e08bb8f32878bc54dc4afed7f248c8</id>
<content type='text'>
This new DWARFBaseDIE is going to be used for DWARFUnit::GetUnitDIEOnly() as
other DIEs are unavailable that time so the caller should not have methods
available to access them.

This patch is only a mechanical split without any use of it.

Differential revision: https://reviews.llvm.org/D47275

llvm-svn: 333222
</content>
</entry>
<entry>
<title>General cleanup to minimize the .debug_types patch</title>
<updated>2018-05-09T16:42:53+00:00</updated>
<author>
<name>Greg Clayton</name>
<email>gclayton@apple.com</email>
</author>
<published>2018-05-09T16:42:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=f56c30d13b2ea6546036234e0df1a7e7878efd88'/>
<id>urn:sha1:f56c30d13b2ea6546036234e0df1a7e7878efd88</id>
<content type='text'>
This cleanup is designed to make the https://reviews.llvm.org/D32167 patch smaller and easier to read.

Cleanup in this patch:

Allow DWARFUnit subclasses to hand out the data that should be used when decoding data for a DIE. The information might be in .debug_info or could be in .debug_types. There is a new virtual function on DWARFUnit that each subclass must override:

virtual const lldb_private::DWARFDataExtractor &amp;DWARFUnit::GetData() const;
This allows DWARFCompileUnit and eventually DWARFTypeUnit to hand out different data to be used when decoding the DIE information.

Add a new pure virtual function to get the size of the DWARF unit header:

virtual uint32_t DWARFUnit::GetHeaderByteSize() const = 0;
This allows DWARFCompileUnit and eventually DWARFTypeUnit to hand out different offsets where the first DIE starts when decoding DIE information from the unit.

Added a new function to DWARFDataExtractor to get the size of an offset:

size_t DWARFDataExtractor::GetDWARFSizeOfOffset() const;
Removed dead dumping and parsing code in the DWARFDebugInfo class.
Inlined a bunch of calls in DWARFUnit for accessors that were just returning integer member variables.
Renamed DWARFUnit::Size() to DWARFUnit::GetHeaderByteSize() as it clearly states what it is doing and makes more sense.

Differential Revision: https://reviews.llvm.org/D46606

llvm-svn: 331892
</content>
</entry>
<entry>
<title>Move the codebase to use: DWARFCompileUnit -&gt; DWARFUnit</title>
<updated>2018-03-18T20:11:02+00:00</updated>
<author>
<name>Jan Kratochvil</name>
<email>jan.kratochvil@redhat.com</email>
</author>
<published>2018-03-18T20:11:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=c4d65751df2e899201c8ad6f1650aa8532222f2b'/>
<id>urn:sha1:c4d65751df2e899201c8ad6f1650aa8532222f2b</id>
<content type='text'>
Now the codebase can use the DWARFUnit superclass. It will make it later
seamlessly work also with DWARFPartialUnit for DWZ.

This patch is only a search-and-replace easily undone, nothing interesting
in it.

Differential revision: https://reviews.llvm.org/D42892

llvm-svn: 327810
</content>
</entry>
<entry>
<title>*** This commit represents a complete reformatting of the LLDB source code</title>
<updated>2016-09-06T20:57:50+00:00</updated>
<author>
<name>Kate Stone</name>
<email>katherine.stone@apple.com</email>
</author>
<published>2016-09-06T20:57:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=b9c1b51e45b845debb76d8658edabca70ca56079'/>
<id>urn:sha1:b9c1b51e45b845debb76d8658edabca70ca56079</id>
<content type='text'>
*** to conform to clang-format’s LLVM style.  This kind of mass change has
*** two obvious implications:

Firstly, merging this particular commit into a downstream fork may be a huge
effort.  Alternatively, it may be worth merging all changes up to this commit,
performing the same reformatting operation locally, and then discarding the
merge for this particular commit.  The commands used to accomplish this
reformatting were as follows (with current working directory as the root of
the repository):

    find . \( -iname "*.c" -or -iname "*.cpp" -or -iname "*.h" -or -iname "*.mm" \) -exec clang-format -i {} +
    find . -iname "*.py" -exec autopep8 --in-place --aggressive --aggressive {} + ;

The version of clang-format used was 3.9.0, and autopep8 was 1.2.4.

Secondly, “blame” style tools will generally point to this commit instead of
a meaningful prior commit.  There are alternatives available that will attempt
to look through this change and find the appropriate prior commit.  YMMV.

llvm-svn: 280751
</content>
</entry>
<entry>
<title>When support for DWO files was added, there were two ways to pass lldb::user_id_t out to the rest of LLDB:</title>
<updated>2016-03-30T20:14:35+00:00</updated>
<author>
<name>Greg Clayton</name>
<email>gclayton@apple.com</email>
</author>
<published>2016-03-30T20:14:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=2f869fe9d27c3364ba778701c84c4ad964770a1b'/>
<id>urn:sha1:2f869fe9d27c3364ba778701c84c4ad964770a1b</id>
<content type='text'>
1 - DWARF in .o files with debug map in executable: we would place the compile unit index in the upper 32 bits of the 64 bit value and the lower 32 bits would be the DIE offset
2 - DWO: we would place the compile unit offset in the upper 32 bits of the 64 bit value and the lower 32 bits would be the DIE offset

There was a mixing and matching of this and it wasn't done consistently.

Major changes include:

The DIERef constructor that takes a lldb::user_id_t now requires a SymbolFileDWARF:

DIERef(lldb::user_id_t uid, SymbolFileDWARF *dwarf)

It is needed so that it can be decoded correctly. If it is DWARF in .o files with debug map in executable, then we get the right compile unit from the SymbolFileDWARFDebugMap, otherwise, we use the compile unit offset and DIE offset for DWO or normal DWARF.

The function:

lldb::user_id_t DIERef::GetUID() const;

Now becomes

lldb::user_id_t DIERef::GetUID(SymbolFileDWARF *dwarf) const;

Again, we need the DWARF file to encode it correctly.

This removes the need for "lldb::user_id_t SymbolFileDWARF::MakeUserID() const" and for bool SymbolFileDWARF::UserIDMatches (lldb::user_id_t uid) const". There were also many places were doing things inneficiently like:

1 - encode a dw_offset_t into a lldb::user_id_t
2 - call the public SymbolFile interface to resolve types using the lldb::user_id_t
3 - This would then decode the lldb::user_id_t into a DIERef, and then try to find that type.

There are many places that are now doing this more efficiently by storing DW_AT_type form values as DWARFFormValue objects and then making a DIERef from them and directly calling the underlying function to resolve the lldb_private::Type, lldb_private::CompilerType, lldb_private::CompilerDecl, lldb_private::CompilerDeclContext.

If there are any regressions in DWARF with DWO, we will need to fix any issues that arise since the original patch wasn't functional for the much more widely used DWARF in .o files with debug map.

&lt;rdar://problem/25200976&gt;

llvm-svn: 264909
</content>
</entry>
<entry>
<title>Trying to submit 254476 one more time. This implement -gmodule debugging support.</title>
<updated>2015-12-08T01:02:08+00:00</updated>
<author>
<name>Greg Clayton</name>
<email>gclayton@apple.com</email>
</author>
<published>2015-12-08T01:02:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=e6b36cdd4d571c91081e2d5f8c0b31830093d110'/>
<id>urn:sha1:e6b36cdd4d571c91081e2d5f8c0b31830093d110</id>
<content type='text'>
It was previously reverted due to issues that showed up only on linux. I was able to reproduce these issues and fix the underlying cause.

So this is the same patch as 254476 with the following two fixes:
- Fix not trying to complete classes that don't have external sources
- Fix ClangASTSource::CompleteType() to check the decl context of types that it finds by basename to ensure we don't complete a type "S" with a type like "std::S". Before this fix ClangASTSource::CompleteType() would accept _any_ type that had a matching basename and copy it into the other type.

&lt;rdar://problem/22992457&gt;

llvm-svn: 254980
</content>
</entry>
<entry>
<title>Revert "Added support for -gmodule debugging when debug info is left in the .o files on Darwin."</title>
<updated>2015-12-02T11:35:54+00:00</updated>
<author>
<name>Tamas Berghammer</name>
<email>tberghammer@google.com</email>
</author>
<published>2015-12-02T11:35:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=fcf334b8243291e524cd2643c8be2575cfb9b46a'/>
<id>urn:sha1:fcf334b8243291e524cd2643c8be2575cfb9b46a</id>
<content type='text'>
The commit caused a test failure on the linux buildbot in
TestDataFormatterSynthVal.

llvm-svn: 254502
</content>
</entry>
<entry>
<title>Added support for -gmodule debugging when debug info is left in the .o files on Darwin.</title>
<updated>2015-12-02T00:43:32+00:00</updated>
<author>
<name>Greg Clayton</name>
<email>gclayton@apple.com</email>
</author>
<published>2015-12-02T00:43:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/bcm5719-llvm/commit/?id=5dfc4a4d0271e9b919702b7a638bb4ee624ec940'/>
<id>urn:sha1:5dfc4a4d0271e9b919702b7a638bb4ee624ec940</id>
<content type='text'>
This is done by finding the types that are forward declarations that come from a module, and loading that module's debug info in a separate lldb_private::Module, and copying the type over into the current module using a ClangASTImporter object. ClangASTImporter objects are already used to copy types from on clang::ASTContext to another for expressions so the type copying code has been around for a while.

A new FindTypes variant was added to SymbolVendor and SymbolFile:

size_t
SymbolVendor::FindTypes (const std::vector&lt;CompilerContext&gt; &amp;context, bool append, TypeMap&amp; types);

size_t
SymbolVendor::FindTypes (const std::vector&lt;CompilerContext&gt; &amp;context, bool append, TypeMap&amp; types);

The CompilerContext is a way to represent the exact context of a type and pass it through an agnostic API boundary so that we can find that exact context elsewhere in another file. This was required here because we can have a module that has submodules, both of which have a "foo" type.

I am not able to add tests for this yet as we currently don't build our C/C++/ObjC binaries with the clang binary that we build. There are some driver issues where it can't find the header files for the C and C++ standard library which makes compiling these tests hard. We can't also guarantee that if we are building with clang that it supporst the exact format of -gmodule debugging that we are trying to test. We have had other versions of clang that had a different implementation of -gmodule debugging that we are no longer supporting, so we can't enable tests if we are building with clang without compiling something and looking at the structure of the DWARF that was generated to ensure that it is the format we can actually use.

llvm-svn: 254476
</content>
</entry>
</feed>
