[PATCH] D70444: dwarfdump --statistics: Use new location list api

Pavel Labath via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 19 07:46:42 PST 2019


labath created this revision.
labath added reviewers: dblaikie, cmtice, vsk.
Herald added a subscriber: aprantl.
Herald added a project: LLVM.
labath added a parent revision: D70394: [DWARF] Add an api to get "interpreted" location lists.

This patch removes manual location list handling in the statistics code
and replaces it with the new DWARFDie api, which provides access to a
"cooked" location list. This has the following effects:

- the code now properly handles split-dwarf location lists
- it will automatically support dwarf5 location lists once support for those is added
- it properly handles location lists with base address selection entries
- it fixes a bug where the location list code was using the first DW_AT_ranges range as a "base address" of the compile unit (it should have used DW_AT_low_pc instead. The effect of this was that the computation of the start address of a variable in its scope was broken for these kinds of compile units. This only manifested itself on linked files, since in object files the first DW_AT_ranges range normally starts at 0.

Since pretty much every kind of location list was broken in some way,
it's hard to verify that the new implementation is correct -- the output
will be different in all non-trivial cases, and mostly with good reason.

Most of the existing statistics tests continue to pass though, and a
visual inspection of the statistics for non-trivial inputs shows that
the data is more "reasonable" now. I have updated the "dwo statistics"
test to include the new numbers, as the previous ones were completely
bogus, and I have added a targeted test for the "base address" bug.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D70444

Files:
  llvm/test/tools/llvm-dwarfdump/X86/statistics-base-address.s
  llvm/test/tools/llvm-dwarfdump/X86/statistics-dwo.test
  llvm/tools/llvm-dwarfdump/Statistics.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D70444.230074.patch
Type: text/x-patch
Size: 11490 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20191119/55efb2f3/attachment.bin>


More information about the llvm-commits mailing list