Alexey Samsonov
57736afed2
[DebugInfo] fixup for r162657: update CMakeLists.txt
...
llvm-svn: 162659
2012-08-27 07:24:43 +00:00
Alexey Samsonov
e39e62d8e5
Add basic support for .debug_ranges section to LLVM's DebugInfo library.
...
This section (introduced in DWARF-3) is used to define instruction address
ranges for functions that are not contiguous and can't be described
by low_pc/high_pc attributes (this is the usual case for inlined subroutines).
The patch is the first step to support fetching complete inlining info from DWARF.
Reviewed by Benjamin Kramer.
llvm-svn: 162657
2012-08-27 07:17:47 +00:00
Eric Christopher
742a44014e
Add support for some missing DW_FORM_*.
...
TODO: Fix code duplication and coding style.
llvm-svn: 162525
2012-08-24 01:14:23 +00:00
Eric Christopher
2ab028ca0f
Formatting.
...
llvm-svn: 162524
2012-08-24 01:14:21 +00:00
Eric Christopher
1b1c2a9f48
Formatting cleanup.
...
llvm-svn: 162499
2012-08-23 23:26:57 +00:00
Eric Christopher
becf1e9673
Add an assert here in case parsing gave us a NULL compile unit.
...
llvm-svn: 162498
2012-08-23 23:21:11 +00:00
Eric Christopher
524510c805
80-col.
...
llvm-svn: 162422
2012-08-23 00:52:51 +00:00
Eric Christopher
73e02367e0
Tidy.
...
llvm-svn: 162421
2012-08-23 00:52:49 +00:00
Alexey Samsonov
fa8f91a368
Fix the representation of debug line table in DebugInfo LLVM library,
...
and "instruction address -> file/line" lookup.
Instead of plain collection of rows, debug line table for compilation unit is now
treated as the number of row ranges, describing sequences (series of contiguous machine
instructions). The sequences are not always listed in the order of increasing
address, so previously used std::lower_bound() sometimes produced wrong results.
Now the instruction address lookup consists of two stages: finding the correct
sequence, and searching for address in range of rows for this sequence.
llvm-svn: 161414
2012-08-07 11:46:57 +00:00
Alexey Samsonov
8832a9374f
DebugInfo library: add support for fetching absolute paths to source files
...
(instead of basenames) from DWARF. Use this behavior in llvm-dwarfdump tool.
Reviewed by Benjamin Kramer.
llvm-svn: 160496
2012-07-19 07:03:58 +00:00
Alexey Samsonov
5204605486
Improve behavior of DebugInfoEntryMinimal::getSubprogramName() introduced in r159512.
...
To fetch a subprogram name we should not only inspect the DIE for this subprogram, but optionally inspect
its specification, or its abstract origin (even if there is no inlining), or even specification of an abstract origin.
Reviewed by Benjamin Kramer.
llvm-svn: 160365
2012-07-17 15:28:35 +00:00
Alexey Samsonov
a887f63924
Fix a bug in DebugInfo lib, extend a comment for one of the methods
...
llvm-svn: 159707
2012-07-04 09:42:54 +00:00
Alexey Samsonov
2e5d156c11
This patch extends the libLLVMDebugInfo which contains a minimalistic DWARF parser:
...
1) DIContext is now able to return function name for a given instruction address (besides file/line info).
2) llvm-dwarfdump accepts flag --functions that prints the function name (if address is specified by --address flag).
3) test case that checks the basic functionality of llvm-dwarfdump added
llvm-svn: 159512
2012-07-02 05:54:45 +00:00
Benjamin Kramer
270e886395
Fix a C++11 UDL conflict.
...
Still not fixed in the standard ;)
llvm-svn: 154044
2012-04-04 20:33:56 +00:00
David Blaikie
06ecc99a56
More dead code removal (using -Wunreachable-code)
...
llvm-svn: 148578
2012-01-20 21:51:11 +00:00
David Blaikie
576aba04f1
Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch
...
llvm-svn: 146960
2011-12-20 02:50:00 +00:00
Daniel Dunbar
30d6a45140
LLVMBuild: Remove trailing newline, which irked me.
...
llvm-svn: 146409
2011-12-12 19:48:00 +00:00
Daniel Dunbar
4e00f5f8fd
build/CMake: Finish removal of add_llvm_library_dependencies.
...
llvm-svn: 145420
2011-11-29 19:25:30 +00:00
Benjamin Kramer
da83e60daf
Audited all the format strings in libDebugInfo and fixed those that didn't match the types.
...
llvm-svn: 143814
2011-11-05 16:01:13 +00:00
Benjamin Kramer
638df7f8c4
Reduce the offsets in DwarfDebugInfoEntry to 32 bit, they're printed with %x and
...
that breaks on big-endian machines.
I have to clean up the 32/64 bit confusion in libDebugInfo some day.
llvm-svn: 143812
2011-11-05 15:35:00 +00:00
Benjamin Kramer
3c2ba1a51a
Add more PRI.64 macros for MSVC and use them throughout the codebase.
...
llvm-svn: 143799
2011-11-05 08:57:40 +00:00
Daniel Dunbar
3760ebeebb
build: Add initial cut at LLVMBuild.txt files.
...
llvm-svn: 143634
2011-11-03 18:53:17 +00:00
NAKAMURA Takumi
cc0706b36c
lib/DebugInfo/DWARFDebugLine.cpp: De-Unicode-ify.
...
llvm-svn: 141484
2011-10-08 11:22:47 +00:00
NAKAMURA Takumi
fe47764929
Whitespace
...
llvm-svn: 141483
2011-10-08 11:22:41 +00:00
Benjamin Kramer
ff31737153
DWARF: avoid unnecessary map lookups.
...
llvm-svn: 140260
2011-09-21 17:31:42 +00:00
Benjamin Kramer
5938cf29d2
Namespacify.
...
llvm-svn: 139892
2011-09-16 00:35:06 +00:00
Benjamin Kramer
e98b6ec93c
DWARF: Reset the state after parsing a line table prologue and remove an unnecessary lookup.
...
llvm-svn: 139859
2011-09-15 21:59:13 +00:00
Benjamin Kramer
912beeec25
DWARF: Don't crash when looking up an invalid address.
...
llvm-svn: 139846
2011-09-15 21:08:54 +00:00
Benjamin Kramer
a2833ff7e0
DWARF: Put all the pieces we have together and provide a single accessor to DIContext that provides line information when given an address.
...
llvm-svn: 139836
2011-09-15 20:43:22 +00:00
Benjamin Kramer
5307d9c91a
DWARF: Remove accessors that parse the whole line table section in one go, this can't possibly work.
...
The address size is specified by the compile unit associated with a line table, there is no global address size.
llvm-svn: 139835
2011-09-15 20:43:18 +00:00
Benjamin Kramer
1adbd30351
DWARF: Print line tables per compile unit, so they get the right address size.
...
llvm-svn: 139808
2011-09-15 18:02:20 +00:00
Benjamin Kramer
900209189c
DWARF: wire up .debug_str dumping.
...
llvm-svn: 139799
2011-09-15 16:57:13 +00:00
Benjamin Kramer
346abfde05
DWARF: Make DIE printing more bulletproof.
...
llvm-svn: 139786
2011-09-15 05:43:00 +00:00
Benjamin Kramer
2b93dac69c
DWARF: Print the number for unknown abbrev fields.
...
Thanks Nick!
llvm-svn: 139778
2011-09-15 04:15:59 +00:00
Benjamin Kramer
2dd05a53d3
DWARF: Fail gracefully when encountering unknown values in an abbrev.
...
llvm-svn: 139777
2011-09-15 04:00:58 +00:00
Nick Lewycky
4b85977895
Give structs with virtual methods a virtual destructor.
...
llvm-svn: 139776
2011-09-15 03:41:51 +00:00
Benjamin Kramer
8f332f8767
DWARF: Silence GCC -Wsign-compare warning.
...
llvm-svn: 139775
2011-09-15 03:20:04 +00:00
Benjamin Kramer
551244d899
DWARF: Fix indentation.
...
llvm-svn: 139774
2011-09-15 03:11:09 +00:00
Benjamin Kramer
8013b8f7e0
DWARF: Include <algorithm> explicitly.
...
llvm-svn: 139773
2011-09-15 02:19:33 +00:00
Benjamin Kramer
ceca872d69
DWARF: Add basic support for line tables.
...
The llvm-dwarfdump output isn't very verbose yet.
llvm-svn: 139771
2011-09-15 02:12:05 +00:00
Benjamin Kramer
00648a5c53
DWARF: Generate the address lookup table from the DIE tree if .debug_aranges is not available.
...
Ported from LLDB.
llvm-svn: 139732
2011-09-14 20:52:27 +00:00
Benjamin Kramer
3f753c2372
DWARF: Reorder fields to reduce padding.
...
llvm-svn: 139712
2011-09-14 18:34:47 +00:00
Benjamin Kramer
fd97743d22
DWARF: Improve indentation of DIE dumping so it's easier to see the structure.
...
llvm-svn: 139705
2011-09-14 17:54:56 +00:00
Benjamin Kramer
b08f6dc724
llvm-dwarfdump: Make the "is debug info section" heuristic stricter so it doesn't accidentaly picks up the wrong section.
...
Also add some validation code to the aranges section parser.
Fixes PR10926.
llvm-svn: 139701
2011-09-14 17:28:13 +00:00
Benjamin Kramer
a7b727b0bf
Don't rely in <algorithm> being pulled in transitively.
...
llvm-svn: 139684
2011-09-14 01:27:48 +00:00
Benjamin Kramer
6b456ffb42
DWARF: Port support for parsing .debug_aranges section from LLDB and wire it up to llvm-dwarfdump.
...
This is only one half of it, the part that caches address ranges from the DIEs when .debug_aranges is
not available will be ported soon.
llvm-svn: 139680
2011-09-14 01:09:52 +00:00
Benjamin Kramer
62f1c110f1
DebugInfo: Don't print DIEs multiple times.
...
llvm-svn: 139671
2011-09-14 00:15:32 +00:00
Benjamin Kramer
c592744658
Style & indentation tweaks.
...
llvm-svn: 139646
2011-09-13 21:47:32 +00:00
Benjamin Kramer
fdfaae6a8f
I know copy&paste!
...
llvm-svn: 139628
2011-09-13 19:49:53 +00:00
Benjamin Kramer
c4e7a56915
Sketch out a DWARF parser.
...
This introduces a new library to LLVM: libDebugInfo. It will provide debug information
parsing to LLVM. Much of the design and some of the code is taken from the LLDB project.
It also contains an llvm-dwarfdump tool that can dump the abbrevs and DIEs from an
object file. It can be used to write tests for DWARF input and output easily.
llvm-svn: 139627
2011-09-13 19:42:23 +00:00