[all-commits] [llvm/llvm-project] f65cff: dwarfdump --statistics: Use new location list api

Pavel Labath via All-commits all-commits at lists.llvm.org
Thu Nov 21 02:53:45 PST 2019


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: f65cfff605f2fd802fc337c6152474e3f3d22a1c
      https://github.com/llvm/llvm-project/commit/f65cfff605f2fd802fc337c6152474e3f3d22a1c
  Author: Pavel Labath <pavel at labath.sk>
  Date:   2019-11-21 (Thu, 21 Nov 2019)

  Changed paths:
    A llvm/test/tools/llvm-dwarfdump/X86/statistics-base-address.s
    M llvm/test/tools/llvm-dwarfdump/X86/statistics-dwo.test
    M llvm/tools/llvm-dwarfdump/Statistics.cpp

  Log Message:
  -----------
  dwarfdump --statistics: Use new location list api

Summary:
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.

Reviewers: dblaikie, cmtice, vsk

Subscribers: aprantl, SouraVX, JDevlieghere, djtodoro, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D70444




More information about the All-commits mailing list