[all-commits] [llvm/llvm-project] a03435: Recommit "[DWARF] Add an api to get "interpreted" ...

Pavel Labath via All-commits all-commits at lists.llvm.org
Wed Nov 20 07:23:25 PST 2019


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

  Changed paths:
    M llvm/include/llvm/DebugInfo/DWARF/DWARFDebugLoc.h
    M llvm/include/llvm/DebugInfo/DWARF/DWARFDie.h
    M llvm/include/llvm/DebugInfo/DWARF/DWARFLocationExpression.h
    M llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h
    M llvm/lib/DebugInfo/DWARF/DWARFDebugLoc.cpp
    M llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
    M llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp
    M llvm/lib/ObjectYAML/DWARFEmitter.cpp
    M llvm/unittests/DebugInfo/DWARF/CMakeLists.txt
    A llvm/unittests/DebugInfo/DWARF/DWARFDieTest.cpp

  Log Message:
  -----------
  Recommit "[DWARF] Add an api to get "interpreted" location lists"

This recommits 089c0f581492cd6e2a3d2927be3fbf60ea2d7e62, which was
reverted due to failing tests on big endian machines. It includes a fix
which I believe (I don't have BE machine) should fix this issue. The fix
consists of correcting the invocation DWARFYAML::EmitDebugSections,
which was missing one (default) function arguments, and so didn't
actually force the little-endian mode.

The original commit message follows.

Summary:
This patch adds DWARFDie::getLocations, which returns the location
expressions for a given attribute (typically DW_AT_location). It handles
both "inline" locations and references to the external location list
sections (currently only of the DW_FORM_sec_offset type). It is
implemented on top of DWARFUnit::findLoclistFromOffset, which is also
added in this patch. I tried to make their signatures similar to the
equivalent range list functionality.

The actual location list interpretation logic is in
DWARFLocationTable::visitAbsoluteLocationList. This part is not
equivalent to the range list code, but this deviation is motivated by a
desire to reuse the same location list parsing code within lldb.

The functionality is tested via a c++ unit test of the DWARFDie API.

Reviewers: dblaikie, JDevlieghere, SouraVX

Subscribers: mgorny, hiraditya, cmtice, probinson, llvm-commits, aprantl

Tags: #llvm

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




More information about the All-commits mailing list