[DynInst_API:] [dyninst/dyninst] 874b3b: Fix DwarfFrameParser, decodeDwarfExpression and Dw...


Date: Tue, 14 May 2019 12:10:03 -0700
From: Xiaozhu Meng <noreply@xxxxxxxxxx>
Subject: [DynInst_API:] [dyninst/dyninst] 874b3b: Fix DwarfFrameParser, decodeDwarfExpression and Dw...
  Branch: refs/heads/master
  Home:   https://github.com/dyninst/dyninst
  Commit: 874b3b27cc4c039f029fa4f15b0104e138a5a456
      https://github.com/dyninst/dyninst/commit/874b3b27cc4c039f029fa4f15b0104e138a5a456
  Author: Sasha @leela <sasha@xxxxxxxxxxx>
  Date:   2019-05-09 (Thu, 09 May 2019)

  Changed paths:
    M dwarf/h/dwarfFrameParser.h
    M dwarf/h/dwarfHandle.h
    M dwarf/h/dwarfResult.h
    M dwarf/src/dwarfExprParser.C
    M dwarf/src/dwarfFrameParser.C
    M dwarf/src/dwarfResult.C
    M dyninstAPI/src/stackwalk-aarch64.C
    M stackwalk/src/dbginfo-stepper.C
    M stackwalk/src/linux-aarch64-swk.C

  Log Message:
  -----------
  Fix DwarfFrameParser, decodeDwarfExpression and DwarfResult

After porting Dyninst to use libdw, DwarfFrameParser missed dealing
with important Dwarf operations that would decode rules for findind
registers values. These rules were not properly decoded by Dyninst
decodeDwarfExpression, neither were being dealt by DwarFrameParser.
This fix properly retrieves libdw Dwarf operations and decodes them,
making it possible to DebugStepper work, which wasn't even before the
port, when lidwarf was being used on Dyninst 9.3.

Basically, Dwarf frame info can be a simple dwarf expression, representing
a value or a memory address, a location description, or a location list.
Libdw gives the consumer an array of dwarf operations that describes how
to find the value they're looking for, as opposed to libdwarf who gives
the consumer many out parameters that lead to different ways to find a
value. This important change made DwarfFrameParser work only partially
after the port. And this fix came to implement the cases that were not
being considered.


  Commit: 9aa0f8288c5d88e2bb1e3a5f372ce8d5bdedd5dd
      https://github.com/dyninst/dyninst/commit/9aa0f8288c5d88e2bb1e3a5f372ce8d5bdedd5dd
  Author: Xiaozhu Meng <xmeng@xxxxxxxxxxx>
  Date:   2019-05-14 (Tue, 14 May 2019)

  Changed paths:
    M dwarf/h/dwarfFrameParser.h
    M dwarf/h/dwarfHandle.h
    M dwarf/h/dwarfResult.h
    M dwarf/src/dwarfExprParser.C
    M dwarf/src/dwarfFrameParser.C
    M dwarf/src/dwarfResult.C
    M dyninstAPI/src/stackwalk-aarch64.C
    M stackwalk/src/dbginfo-stepper.C
    M stackwalk/src/linux-aarch64-swk.C

  Log Message:
  -----------
  Merge pull request #596 from dyninst/fix-sw-stepper

Fix DwarfFrameParser, decodeDwarfExpression and DwarfResult


Compare: https://github.com/dyninst/dyninst/compare/85be2b7c995a...9aa0f8288c5d
[← Prev in Thread] Current Thread [Next in Thread→]