Commit Graph

57 Commits

Author SHA1 Message Date
Craig Topper b1d83e8c72 Mark unimplemented copy constructors and copy assignment operators as LLVM_DELETED_FUNCTION.
llvm-svn: 164090
2012-09-18 02:01:41 +00:00
Roman Divacky ad06cee239 Stop casting away const qualifier needlessly.
llvm-svn: 163258
2012-09-05 22:26:57 +00:00
Roman Divacky 09c8a3dde5 Remove unused typedefs gcc4.8 warns about.
llvm-svn: 163225
2012-09-05 17:55:46 +00:00
Alexey Samsonov c942e6b781 Add support for fetching inlining context (stack of source code locations)
by instruction address from DWARF.

Add --inlining flag to llvm-dwarfdump to demonstrate and test this functionality,
so that "llvm-dwarfdump --inlining --address=0x..." now works much like
"addr2line -i 0x...", provided that the binary has debug info
(Clang's -gline-tables-only *is* enough).

llvm-svn: 163128
2012-09-04 08:12:33 +00:00
Alexey Samsonov 45be793e3a Refactor fetching file/line info from DWARFContext to simplify the
code and allow better code reuse. Make the code a bit more conforming
to LLVM code style.
No functionality change.

llvm-svn: 162895
2012-08-30 07:49:50 +00:00
Marshall Clow ef271cce0a Fix compile error when building with C++11 - clang thinks that PRIx64 is a user-defined suffix or something
llvm-svn: 162704
2012-08-27 22:53:35 +00:00
NAKAMURA Takumi 37338a8352 DWARFDebugRangeList.cpp: Use PRIx64 for uint64_t as format string.
llvm-svn: 162665
2012-08-27 10:10:10 +00:00
Alexey Samsonov b4c95daf86 [DebugInfo] fixup for r162657: update CMakeLists.txt
llvm-svn: 162659
2012-08-27 07:24:43 +00:00
Alexey Samsonov 034e57a297 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 d999bb7ff4 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 67942acc6b Formatting.
llvm-svn: 162524
2012-08-24 01:14:21 +00:00
Eric Christopher 20b897b693 Formatting cleanup.
llvm-svn: 162499
2012-08-23 23:26:57 +00:00
Eric Christopher 9142ea7bec 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 c2ce00418c 80-col.
llvm-svn: 162422
2012-08-23 00:52:51 +00:00
Eric Christopher 0ef6ebc7e4 Tidy.
llvm-svn: 162421
2012-08-23 00:52:49 +00:00
Alexey Samsonov 947228c4f7 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 e16e16add6 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 b604ff2a07 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 5cbbf4ca57 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 f4462fa3ca 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 379018b2da 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 46a9f016c5 More dead code removal (using -Wunreachable-code)
llvm-svn: 148578
2012-01-20 21:51:11 +00:00
David Blaikie a379b18173 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 27a7489a03 LLVMBuild: Remove trailing newline, which irked me.
llvm-svn: 146409
2011-12-12 19:48:00 +00:00
Daniel Dunbar 539d0a8a09 build/CMake: Finish removal of add_llvm_library_dependencies.
llvm-svn: 145420
2011-11-29 19:25:30 +00:00
Benjamin Kramer 79730ad07d 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 f7e0a31f8a 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 f3da529028 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 bf9bba47a1 build: Add initial cut at LLVMBuild.txt files.
llvm-svn: 143634
2011-11-03 18:53:17 +00:00
NAKAMURA Takumi f995985eba lib/DebugInfo/DWARFDebugLine.cpp: De-Unicode-ify.
llvm-svn: 141484
2011-10-08 11:22:47 +00:00
NAKAMURA Takumi ade616cb57 Whitespace
llvm-svn: 141483
2011-10-08 11:22:41 +00:00
Benjamin Kramer 2eeb4e5bd4 DWARF: avoid unnecessary map lookups.
llvm-svn: 140260
2011-09-21 17:31:42 +00:00
Benjamin Kramer 67b014b2c2 Namespacify.
llvm-svn: 139892
2011-09-16 00:35:06 +00:00
Benjamin Kramer 112ec17e1b 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 901339d070 DWARF: Don't crash when looking up an invalid address.
llvm-svn: 139846
2011-09-15 21:08:54 +00:00
Benjamin Kramer 2602ca67e8 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 679e1752f8 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 6dda032003 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 07d4b1c455 DWARF: wire up .debug_str dumping.
llvm-svn: 139799
2011-09-15 16:57:13 +00:00
Benjamin Kramer 9bca64ff2a DWARF: Make DIE printing more bulletproof.
llvm-svn: 139786
2011-09-15 05:43:00 +00:00
Benjamin Kramer 21a5092830 DWARF: Print the number for unknown abbrev fields.
Thanks Nick!

llvm-svn: 139778
2011-09-15 04:15:59 +00:00
Benjamin Kramer 4137b6a2b6 DWARF: Fail gracefully when encountering unknown values in an abbrev.
llvm-svn: 139777
2011-09-15 04:00:58 +00:00
Nick Lewycky 4d0449204e Give structs with virtual methods a virtual destructor.
llvm-svn: 139776
2011-09-15 03:41:51 +00:00
Benjamin Kramer 21b6f1188f DWARF: Silence GCC -Wsign-compare warning.
llvm-svn: 139775
2011-09-15 03:20:04 +00:00
Benjamin Kramer 123bfbbb73 DWARF: Fix indentation.
llvm-svn: 139774
2011-09-15 03:11:09 +00:00
Benjamin Kramer a57c46aa49 DWARF: Include <algorithm> explicitly.
llvm-svn: 139773
2011-09-15 02:19:33 +00:00
Benjamin Kramer 5acab501de 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 3266493603 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 a59d118b6c DWARF: Reorder fields to reduce padding.
llvm-svn: 139712
2011-09-14 18:34:47 +00:00
Benjamin Kramer f915acc613 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