llvm-project/llvm/test/tools/llvm-dwarfdump
Jonas Devlieghere 4cc567bb9e [DWARFFormValue] Don't consider DW_FORM_data4/8 to be section offsets.
When dumping ToT clan's debug info with dwarfdump, we were seeing an
error saying that that the location list overflows the debug_loc
section. After reducing the testcase we figured out that we were
interpreting the DW_FORM_data4 as a section offset.

In DWARF3 DW_FORM_data4 and DW_FORM_data8 served also as a section
offset. Until now we didn't check check for the DWARF version, because
some producers (read old versions of clang) were still emitting this.
The relevant code/comment was added in 2013, and I believe it's now
reasonable to start checking the version.

The FormValue class is a little bit of a mess because it cashes the
DWARF unit and context when it extracted the value itself. Several
methods of the class rely on it being present, or return an Optional for
the code path that needs it. At the same time the FormValue class also
used in places where there's no DWARF unit.

For this patch I went with the least invasive change: checking the
version from the CU when it's available. If it's not (because the form
value was created from a value directly) we default to the old behavior.

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

llvm-svn: 355456
2019-03-05 23:47:22 +00:00
..
X86 [DWARFFormValue] Don't consider DW_FORM_data4/8 to be section offsets. 2019-03-05 23:47:22 +00:00
cmdline.test [dwarfdump] Make incompatibility between -diff and -verbose explicit. 2018-10-23 21:51:44 +00:00
lit.local.cfg llvm-dwarfdump: support dumping UUIDs of Mach-O binaries. 2017-09-13 18:22:59 +00:00
uuid.yaml dwarfdump: Match the --uuid output with that of Darwin dwarfdump. 2018-01-05 21:44:17 +00:00
uuid32.yaml dwarfdump: Match the --uuid output with that of Darwin dwarfdump. 2018-01-05 21:44:17 +00:00