Alexey Samsonov
784baa6f44
Use StringSwitch instead of long chain of if-else. No functionality change.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179682 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-17 14:27:04 +00:00
Alexey Samsonov
cd61455798
Create a stub for DWARF parser unittests
...
Moves one DWARF-specific header to include/llvm/DebugInfo from lib/.
Add a short unittest for r179095.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179678 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-17 08:29:02 +00:00
Benjamin Kramer
acc897a5e1
Rename the C function to create a SLPVectorizerPass to something sane and expose it in the header file.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179272 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-11 11:36:36 +00:00
Alexey Samsonov
32a3e78304
DWARF parser: Fix DWARF-2/3 incompatibility: size of DW_FORM_ref_addr is the same as DW_FORM_addr in DWARF2, and is 4/8 bytes on 32/64-bit DWARF starting from DWARF3. Adding a test for this is a huge pain - generating and uploading pre-built binary with DWARF3 debug info is way too ugly, and writing fine-grained unittests for DebugInfo is impossible, as it doesn't expose any headers in include/llvm. That said, I'm going to choose the second approach and submit the patch exposing DebugInfo headers for review soon enough.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179095 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-09 14:09:42 +00:00
Alexey Samsonov
d6b89ef0fa
DWARF parser: remove duplicated code and fix code style in DIE extractors.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179023 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-08 14:37:16 +00:00
Eric Christopher
9a9e73b47d
DW_FORM_sec_offset should be a relocation on platforms that use
...
a relocation across sections. Do this for DW_AT_stmt list in the
skeleton CU and check the relocations in the debug_info section.
Add a FIXME for multiple CUs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178969 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-07 03:43:09 +00:00
Matt Arsenault
26c417bb58
Fix missing std::. Not sure how this compiles for anyone else.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177620 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-21 00:57:21 +00:00
Rafael Espindola
7b1bea3ccb
xlC doesn't like Header being both a type and a member variable. Rename the
...
member variable.
Patch by Kai <kai@redstar.de>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177575 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-20 21:03:41 +00:00
Eli Bendersky
46e0d1d58c
Code cleanup: pass Offset by pointer to parseInstruction to more explicitly
...
convey that it's a INOUT argument.
Also, if parsing of entry instructions fails, don't push the entry.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175847 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-22 00:50:48 +00:00
Eli Bendersky
7bf3d6a043
Previously, parsing capability of the .debug_frame section was added
...
to lib/DebugInfo, with dumping in llvm-dwarfdump. This patch adds
initial ability to parse and dump CFA instructions contained in
entries.
To keep it manageable, the patch omits some more advanced capabilities
(accounted in TODOs):
* Parsing of instructions with BLOCK arguments (expression lists)
* Dumping of actual instruction arguments (currently only names are
dumped). This is quite tricky since the dumper has to effectively
"interpret" the instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175820 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-21 22:53:19 +00:00
Benjamin Kramer
74b3c8da48
Make helpers static. Add missing include so LLVMInitializeObjCARCOpts gets C linkage.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175264 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-15 12:30:38 +00:00
Krzysztof Parzyszek
e38825f490
Add support for the pubnames section to llvm-dwarfdump.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174976 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-12 16:20:28 +00:00
David Tweed
0b821eff4c
The patch to fix some issues in r174543 fixed the lines failing the test, but missed a couple
...
of lines which weren't being explicitly looked at and were printing incorrect results. These
values clearly must lie within 32 bits, so the casts are definitely safe.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174717 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08 16:35:10 +00:00
NAKAMURA Takumi
d9a8d43ed3
FDE::dumpHeader(): Forgot to fix one more formatting, ... take two!
...
Excuse me, I could not test it locally.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174614 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-07 14:54:42 +00:00
NAKAMURA Takumi
8ff0631967
FDE::dumpHeader(): Forgot to fix one more formatting. It affected bigendian hosts.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174602 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-07 10:57:42 +00:00
NAKAMURA Takumi
90e01ac0ea
DWARFDebugFrame.cpp: Fix formatting on i686 hosts.
...
FIXME: Are they really truncated to i32 from i64 unconditionally?
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174574 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-07 02:02:27 +00:00
Eli Bendersky
2e402d5b5f
Add some comments to new frame entries
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174515 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-06 16:20:31 +00:00
Eli Bendersky
b2ac7c09b1
Failing builds because a private class member is not being used after
...
initialization is one of the reasons I consider -werror to be shoddy.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174485 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-06 05:37:46 +00:00
Eli Bendersky
8a0329e6ff
Add virtual desctructor to FrameEntry to avoid error on delete-non-virtual-dtor
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174483 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-06 03:08:02 +00:00
Eli Bendersky
ba42625074
Fix some formatting & add comments, following Eric's review
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174473 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-06 00:20:38 +00:00
Eli Bendersky
7743232775
Add missing file to CMake list
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174465 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05 23:37:18 +00:00
Eli Bendersky
60bdc5b16e
Initial support for DWARF CFI parsing and dumping in LLVM
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174463 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-05 23:30:58 +00:00
NAKAMURA Takumi
8090a24bd6
DWARFDebugLine.cpp: Fix true path. Did you forget "return true" here?
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173552 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-26 01:45:06 +00:00
Andrew Kaylor
e27a787760
Add DIContext::getLineInfoForAddressRange() function and test. This function allows a caller to obtain a table of line information for a function using the function's address and size.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173537 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-26 00:28:05 +00:00
Nadav Rotem
f777d09f37
Fix a warning in the new DWARFheader. Add a new line at the end of the file.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173518 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-25 22:57:05 +00:00
Andrew Kaylor
ee7c0d2f93
Add support for applying in-memory relocations to the .debug_line section and, in the case of ELF files, using symbol addresses when available for relocations to the .debug_info section. Also extending the llvm-rtdyld tool to add the ability to dump line number information for testing purposes.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173517 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-25 22:50:58 +00:00
Eli Bendersky
939a4e8b69
Add command-line flags for DWARF dumping.
...
Flags for dumping specific DWARF sections added in lib/DebugInfo and
llvm-dwarfdump.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173480 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-25 20:26:43 +00:00
Eric Christopher
446b88fb81
Fix the assembly and dissassembly of DW_FORM_sec_offset. Found this by
...
changing both the string of the dwo_name to be correct and the type of
the statement list.
Testcases all around.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172699 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-17 03:00:04 +00:00
Eric Christopher
d96c72a14c
Add the DW_AT_GNU_addr_base for the skeleton cu. Add support for
...
emitting the dwarf32 version of DW_FORM_sec_offset and correct
disassembler support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172698 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-17 02:59:59 +00:00
Eric Christopher
72f7bfbf0e
Split address information for DWARF5 split dwarf proposal. This involves
...
using the DW_FORM_GNU_addr_index and a separate .debug_addr section which
stays in the executable and is fully linked.
Sneak in two other small changes:
a) Print out the debug_str_offsets.dwo section.
b) Change form we're expecting the entries in the debug_str_offsets.dwo
section to take from ULEB128 to U32.
Add tests for all of this in the fission-cu.ll test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172578 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-15 23:56:56 +00:00
NAKAMURA Takumi
2af949dddd
[Object, DebugInfo] Make DWARFContext BE-aware.
...
test/DebugInfo/member-pointers.ll would not fail in targetting BE any more.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171943 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-09 02:45:05 +00:00
Eric Christopher
e7285c7279
Whitespace and 80-col.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171804 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-07 22:40:48 +00:00
Eric Christopher
dd8e9f395e
Add support for separating strings for the split debug info DWARF5
...
proposal. This leaves the strings in the skeleton die as strp,
but in all dwo files they're accessed now via DW_FORM_GNU_str_index.
Add support for dumping these sections and modify the fission-cu.ll
testcase to have the correct strings and form. Fix a small bug
in the fixed form sizes routine that involved out of array accesses
for the table and add a FIXME in the extractFast routine to fix
this up.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171779 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-07 19:32:41 +00:00
Eric Christopher
e5ef305be2
Update comment.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171689 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-07 03:27:58 +00:00
Eric Christopher
642469f582
Add a space to the end of the line so we don't get "itsbounds" in output.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171487 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-04 18:30:36 +00:00
Eric Christopher
82de10a34c
Extend the dumping infrastructure to deal with additional
...
sections for debug info. These are some of the dwo sections from the
DWARF5 split debug info proposal. Update the fission-cu.ll testcase
to show what we should be able to dump more of now.
Work in progress: Ultimately the relocations will be gone for the
dwo section and the strings will be a different form (as well as
the rest of the sections will be included).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171428 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-02 23:52:13 +00:00
Eric Christopher
32b3768ec1
Right now all of the relocations are 32-bit dwarf, and the relocation
...
information doesn't return an addend for Rel relocations. Go ahead
and use this information to fix relocation handling inside dwarfdump
for 32-bit ELF REL.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171126 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-27 01:07:07 +00:00
Rafael Espindola
b66fc293a2
Don't skip __DWARF,
...
Now that we don't merge section and segment names, we don't need to skip the
segment name to get to the section name.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170839 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-21 04:08:03 +00:00
Bill Wendling
034b94b170
Rename the 'Attributes' class to 'Attribute'. It's going to represent a single attribute in the future.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170502 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-19 07:18:57 +00:00
Chandler Carruth
a1514e24cc
Sort includes for all of the .h files under the 'lib' tree. These were
...
missed in the first pass because the script didn't yet handle include
guards.
Note that the script is now able to handle all of these headers without
manual edits. =]
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169224 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-04 07:12:27 +00:00
Eric Christopher
eb6363adf0
The section is .debug_line.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168666 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-27 01:40:36 +00:00
Eric Christopher
205e60b223
Add some basic support for the fission addr forms to DebugInfo.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168223 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-16 23:44:11 +00:00
Alexey Samsonov
63a450a313
[DebugInfo] Generate address ranges for compile units even if .debug_aranges is present: it is often the case that .debug_aranges section contains ranges only for a small subset of compile units. Test cases will be added in separate commits.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168144 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-16 08:36:25 +00:00
Eric Christopher
d1726a4580
Rewrite DIContext interface to take an object. Update all callers.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167757 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-12 21:40:38 +00:00
Alexey Samsonov
4c0ae9066f
Fixup for r167558: Store raw pointer (instead of reference) to RelocMap in DIContext. This is needed to prevent crashes because of dangling reference if the clients don't provide RelocMap to DIContext constructor.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167728 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-12 14:25:36 +00:00
Eric Christopher
806e03d238
Add a relocation visitor to lib object. This works via caching relocated
...
values in a map that can be passed to consumers. Add a testcase that
ensures this works for llvm-dwarfdump.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167558 91177308-0d34-0410-b5e6-96231b3b80d8
2012-11-07 23:22:07 +00:00
Eric Christopher
203e6f60a8
Reformat and 80-column this. It's not strictly conforming
...
yet, but it's better.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167053 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-30 21:36:43 +00:00
Eric Christopher
e9403c1fd6
Use a typedef to reduce some typing and reformat code accordingly.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166077 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-16 23:46:25 +00:00
Eric Christopher
b69b55f54a
Variable name cleanup.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166076 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-16 23:46:23 +00:00
Craig Topper
c2945e44d5
Mark unimplemented copy constructors and copy assignment operators as LLVM_DELETED_FUNCTION.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164090 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-18 02:01:41 +00:00
Roman Divacky
5932429765
Stop casting away const qualifier needlessly.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163258 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-05 22:26:57 +00:00
Roman Divacky
15d0c81b24
Remove unused typedefs gcc4.8 warns about.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163225 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-05 17:55:46 +00:00
Alexey Samsonov
5eae90d727
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).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163128 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-04 08:12:33 +00:00
Alexey Samsonov
38a6381c0a
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162895 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-30 07:49:50 +00:00
Marshall Clow
e1630e01de
Fix compile error when building with C++11 - clang thinks that PRIx64 is a user-defined suffix or something
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162704 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-27 22:53:35 +00:00
NAKAMURA Takumi
83e2546ad3
DWARFDebugRangeList.cpp: Use PRIx64 for uint64_t as format string.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162665 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-27 10:10:10 +00:00
Alexey Samsonov
07071c1c75
[DebugInfo] fixup for r162657: update CMakeLists.txt
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162659 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-27 07:24:43 +00:00
Alexey Samsonov
eceb5b9977
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162657 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-27 07:17:47 +00:00
Eric Christopher
3887a902a1
Add support for some missing DW_FORM_*.
...
TODO: Fix code duplication and coding style.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162525 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-24 01:14:23 +00:00
Eric Christopher
08cdb6e6b2
Formatting.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162524 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-24 01:14:21 +00:00
Eric Christopher
5d04a3ad0e
Formatting cleanup.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162499 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-23 23:26:57 +00:00
Eric Christopher
fa76f22865
Add an assert here in case parsing gave us a NULL compile unit.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162498 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-23 23:21:11 +00:00
Eric Christopher
bd5bc2161c
80-col.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162422 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-23 00:52:51 +00:00
Eric Christopher
1a145c409a
Tidy.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162421 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-23 00:52:49 +00:00
Alexey Samsonov
351f83be64
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161414 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-07 11:46:57 +00:00
Alexey Samsonov
71d94f8055
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160496 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-19 07:03:58 +00:00
Alexey Samsonov
9d26b0ba06
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160365 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-17 15:28:35 +00:00
Alexey Samsonov
a9543aadff
Fix a bug in DebugInfo lib, extend a comment for one of the methods
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159707 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-04 09:42:54 +00:00
Alexey Samsonov
3e25c4a1e3
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
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159512 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-02 05:54:45 +00:00
Benjamin Kramer
e25a2bd2e3
Fix a C++11 UDL conflict.
...
Still not fixed in the standard ;)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154044 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-04 20:33:56 +00:00
David Blaikie
4d6ccb5f68
More dead code removal (using -Wunreachable-code)
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148578 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-20 21:51:11 +00:00
David Blaikie
2d24e2a396
Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146960 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-20 02:50:00 +00:00
Daniel Dunbar
4ab406d7fc
LLVMBuild: Remove trailing newline, which irked me.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146409 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-12 19:48:00 +00:00
Daniel Dunbar
d782bae970
build/CMake: Finish removal of add_llvm_library_dependencies.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145420 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-29 19:25:30 +00:00
Benjamin Kramer
5eccd36f1a
Audited all the format strings in libDebugInfo and fixed those that didn't match the types.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143814 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05 16:01:13 +00:00
Benjamin Kramer
80cc2598f8
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143812 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05 15:35:00 +00:00
Benjamin Kramer
41a964931a
Add more PRI.64 macros for MSVC and use them throughout the codebase.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143799 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-05 08:57:40 +00:00
Daniel Dunbar
a3a2dfd4a2
build: Add initial cut at LLVMBuild.txt files.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143634 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-03 18:53:17 +00:00
NAKAMURA Takumi
017449d64b
lib/DebugInfo/DWARFDebugLine.cpp: De-Unicode-ify.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141484 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-08 11:22:47 +00:00
NAKAMURA Takumi
3a79eac5b8
Whitespace
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141483 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-08 11:22:41 +00:00
Benjamin Kramer
1d13d9ed96
DWARF: avoid unnecessary map lookups.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140260 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-21 17:31:42 +00:00
Benjamin Kramer
76f58d2031
Namespacify.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139892 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-16 00:35:06 +00:00
Benjamin Kramer
9013db3399
DWARF: Reset the state after parsing a line table prologue and remove an unnecessary lookup.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139859 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-15 21:59:13 +00:00
Benjamin Kramer
f5b0accf43
DWARF: Don't crash when looking up an invalid address.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139846 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-15 21:08:54 +00:00
Benjamin Kramer
101b1c5ff1
DWARF: Put all the pieces we have together and provide a single accessor to DIContext that provides line information when given an address.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139836 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-15 20:43:22 +00:00
Benjamin Kramer
c26ed9b47f
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139835 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-15 20:43:18 +00:00
Benjamin Kramer
fe80f1da40
DWARF: Print line tables per compile unit, so they get the right address size.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139808 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-15 18:02:20 +00:00
Benjamin Kramer
34f864fd38
DWARF: wire up .debug_str dumping.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139799 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-15 16:57:13 +00:00
Benjamin Kramer
75c63087b4
DWARF: Make DIE printing more bulletproof.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139786 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-15 05:43:00 +00:00
Benjamin Kramer
7b97442b49
DWARF: Print the number for unknown abbrev fields.
...
Thanks Nick!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139778 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-15 04:15:59 +00:00
Benjamin Kramer
42180e8336
DWARF: Fail gracefully when encountering unknown values in an abbrev.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139777 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-15 04:00:58 +00:00
Nick Lewycky
6bc4e712dc
Give structs with virtual methods a virtual destructor.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139776 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-15 03:41:51 +00:00
Benjamin Kramer
068d9a564b
DWARF: Silence GCC -Wsign-compare warning.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139775 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-15 03:20:04 +00:00
Benjamin Kramer
89aedba562
DWARF: Fix indentation.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139774 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-15 03:11:09 +00:00
Benjamin Kramer
7393c7f748
DWARF: Include <algorithm> explicitly.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139773 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-15 02:19:33 +00:00
Benjamin Kramer
b848e97611
DWARF: Add basic support for line tables.
...
The llvm-dwarfdump output isn't very verbose yet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139771 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-15 02:12:05 +00:00
Benjamin Kramer
10df80692c
DWARF: Generate the address lookup table from the DIE tree if .debug_aranges is not available.
...
Ported from LLDB.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139732 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-14 20:52:27 +00:00
Benjamin Kramer
d6361c0954
DWARF: Reorder fields to reduce padding.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139712 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-14 18:34:47 +00:00
Benjamin Kramer
0942255f6d
DWARF: Improve indentation of DIE dumping so it's easier to see the structure.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139705 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-14 17:54:56 +00:00
Benjamin Kramer
1c0b24f91a
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139701 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-14 17:28:13 +00:00
Benjamin Kramer
553f933963
Don't rely in <algorithm> being pulled in transitively.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139684 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-14 01:27:48 +00:00
Benjamin Kramer
358f4fd9ee
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139680 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-14 01:09:52 +00:00
Benjamin Kramer
15ec085c40
DebugInfo: Don't print DIEs multiple times.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139671 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-14 00:15:32 +00:00
Benjamin Kramer
4aa3fea8b1
Style & indentation tweaks.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139646 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-13 21:47:32 +00:00
Benjamin Kramer
8a23a77a54
I know copy&paste!
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139628 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-13 19:49:53 +00:00
Benjamin Kramer
72c0d7fdd3
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139627 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-13 19:42:23 +00:00