History log of /external/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
6b80ad96e1960e9c5a4c6c5cab09cc7591d4c3f9 25-Jul-2013 Ashok Thirumurthi <ashok.thirumurthi@intel.com> Fixes LLDB address ranges with gcc 4.8
- Modifies the DWARF parser for DWARF 4 specification of hi_pc as an offset-from-low-pc.


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@187125 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h
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
/external/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h
cbff0fb344c17ef0699c1375f6ddeb5bcd1bdbe2 24-Apr-2012 Greg Clayton <gclayton@apple.com> <rdar://problem/11291668>

Fixed an issue that would happen when using debug map with DWARF in the .o files where we wouldn't ever track down the actual definition for a type when things were in namespaces. We now serialize the decl context information into an intermediate format which allows us to track down the correct definition for a type regardless of which DWARF symbol file it comes from. We do this by creating a "DWARFDeclContext" object that contains the DW_TAG + name for each item in a decl context which we can then use to veto potential accelerator table matches. For example, the accelerator tables store the basename of the type, so if you have "std::vector<int>", we would end up with an accelerator table entry for the type that contained "vector<int>", which we would then search for using a DWARFDeclContext object that contained:

[0] DW_TAG_class_type "vector<int>"
[1] DW_TAG_namespace "std"

This is currently used to track down forward declarations for things like "class a::b::Foo;".


git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@155488 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h
b88575efac471db9156c731c3e28ad7e6d14b5ef 02-Feb-2012 Greg Clayton <gclayton@apple.com> Fixed an issue where we might accept the wrong type when completing
a type when we have a forward declaration. We always have found a
type by basename, but now we also compare the decl context of the
die we are trying to complete with the matches we find from the accelerator
tables to ensure we get the right one.



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@149593 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h
2f28ece553d2ef0d7b3e8d1419020591ec3818f9 04-Jan-2012 Greg Clayton <gclayton@apple.com> <rdar://problem/10507811>

Be better at detecting when DWARF changes and handle this more
gracefully than asserting and exiting.

Also fixed up a bunch of system calls that weren't properly checking
for EINTR.



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@147559 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h
75d8c2591f6c56a09338bf4967a41510165a907e 28-Nov-2011 Greg Clayton <gclayton@apple.com> CommandObjectProcess was recently changed to automatically use the platform
to launch a process for debugging. Since this isn't supported on all platforms,
we need to do what we used to do if this isn't supported. I added:

bool
Platform::CanDebugProcess ();

This will get checked before trying to launch a process for debugging and then
fall back to launching the process through the current host debugger. This
should solve the issue for linux and keep the platform code clean.

Centralized logging code for logging errors, warnings and logs when reporting
things for modules or symbol files. Both lldb_private::Module and
lldb_private::SymbolFile now have the following member functions:

void
LogMessage (Log *log, const char *format, ...);

void
ReportWarning (const char *format, ...);

void
ReportError (const char *format, ...);

These will all output the module name and object (if any) such as:

"error: lldb.so ...."
"warning: my_archive.a(foo.o) ...."

This will keep the output consistent and stop a lot of logging calls from
having to try and output all of the information that uniquely identifies
a module or symbol file. Many places in the code were grabbing the path to the
object file manually and if the module represented a .o file in an archive, we
would see log messages like:

error: foo.a - some error happened



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@145219 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h
489575c164b3b3cfed2f80af6cc58848ad17ab5a 19-Nov-2011 Greg Clayton <gclayton@apple.com> Further performance improvements in the DWARF parser:
1 - the DIE collections no longer have the NULL tags which saves up to 25%
of the memory on typical C++ code
2 - faster parsing by not having to run the SetDIERelations() function anymore
it is done when parsing the DWARF very efficiently.



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@144983 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h
0963fdd2478c6404d11b96e7d5ae1f2de8b3bb1f 18-Nov-2011 Greg Clayton <gclayton@apple.com> Looking at our memory usage with Instruments when debugging a large application
we say that the vectors of DWARFDebugInfoEntry objects were the highest on the
the list.

With these changes we cut our memory usage by 40%!!! I did this by reducing
the size of the DWARFDebugInfoEntry from a previous:

uint32_t offset
uint32_t parent_idx
uint32_t sibling_idx
Abbrev * abbrev_ptr

which was 20 bytes, but rounded up to 24 bytes due to alignment. Now we have:

uint32_t offset
uint32_t parent_idx
uint32_t sibling_idx
uint32_t abbr_idx:15, // 32767 possible abbreviation codes
has_children:1, // 0 = no children, 1 = has children
tag:16; // DW_TAG_XXX value

This gets us down to 16 bytes per DIE. I tested some VERY large DWARF files
(900MB) and found there were only ~700 unique abbreviations, so 32767 should
be enough for any sane compiler. If it isn't there are built in assertions
that will fire off and tell us.



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@144975 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h
d996d0c32b483c2190e1eb288cd3bbbd259c2960 12-Sep-2011 Greg Clayton <gclayton@apple.com> Fixed the header guards.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@139490 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h
169c5fbc8cac8a0bd724bd18fd9d816ca3d6486a 27-Aug-2011 Jim Ingham <jingham@apple.com> Fix a bunch of places where we were passing Stream *'s but were
never checking them for NULL. Pass a reference instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@138694 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h
545489247a7b520dd603c9e5b0f0ef05a77ba9e3 26-Aug-2011 Jim Ingham <jingham@apple.com> Move DIE location reporting into the DWARFDebugInfo class, use it from there in SymbolFileDWARF::ParseType (and eventually in other interesting places as well.)

git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@138644 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h
c5dca6c656ffc94d2f958c56d7bc9076eac90783 12-Aug-2011 Greg Clayton <gclayton@apple.com> Fixed some issues with parsing C++ methods where our detection
was failing if the DWARF was laid out in a certain way. The way
we detect C++ classes is now more robust so that a class method
can be defined outside of the class and refer to a definition inside
the class with a DW_AT_specification or DW_AT_abstract_origin attribute.

Fixed a case in Thread.cpp where we were looking up info in the frame
when we didn't need to. This was from some changes to support external
editors. Now the info is only looked up if needed.




git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@137436 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h
e5748d889fb7fb97b3ff07444894d7714776b609 10-Nov-2010 Greg Clayton <gclayton@apple.com> Did a lot of code cleanup.

Fixed the DWARF plug-in such that when it gets all attributes for a DIE, that
it omits the DW_AT_sibling and DW_AT_declaration when getting attributes
from a DW_AT_abstract_origin or DW_AT_specification DIE.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@118654 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h
4fb400f4dc762fb92f9dcf1f6a7656ed12b09a75 27-Sep-2010 Greg Clayton <gclayton@apple.com> Hooked up detach for ProcessGDBRemote.

Remove the GetUserData()/SetUserData() from the DWARFDebugInfoEntry
class. We now track everything with dense maps.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@114876 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h
5fcff9ac1a713d5e814b4a05edef7544be470ad0 15-Sep-2010 Greg Clayton <gclayton@apple.com> 15-20% speed improvement when parsing DWARF. I used instruments to
find the hotspots in our code when indexing the DWARF. A combination of
using SmallVector to avoid collection allocations, using fixed form
sizes when possible, and optimizing the hot loops contributed to the
speedup.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@113961 91177308-0d34-0410-b5e6-96231b3b80d8
/external/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h
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
/external/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.h