[DynInst_API:] [dyninst/dyninst] cc769c: New walker to walk out of Instrimentation Frames F...


Date: Thu, 04 Oct 2018 08:34:56 -0700
From: Benjamin Welton <welton@xxxxxxxxxxx>
Subject: [DynInst_API:] [dyninst/dyninst] cc769c: New walker to walk out of Instrimentation Frames F...
  Branch: refs/heads/master
  Home:   https://github.com/dyninst/dyninst
  Commit: cc769c889488c0ff5787561563fefa9df4ac0284
      https://github.com/dyninst/dyninst/commit/cc769c889488c0ff5787561563fefa9df4ac0284
  Author: Benjamin Welton <welton@xxxxxxxxxxx>
  Date:   2018-10-03 (Wed, 03 Oct 2018)

  Changed paths:
    M stackwalk/h/framestepper.h
    M stackwalk/src/framestepper.C
    M stackwalk/src/linuxbsd-x86-swk.C
    M stackwalk/src/sw.h

  Log Message:
  -----------
  New walker to walk out of Instrimentation Frames FP

This patch contains a new walker that can walk out of inst frames in first party stackwalking mode.

For this to work, the emitter fixes located in pull request #451 must be applied. The walker itself creates
a Stackwalker frame based on the information saved by the emitter.


  Commit: 5f5358637619cf6b964cffc12e6d76f673ec5be6
      https://github.com/dyninst/dyninst/commit/5f5358637619cf6b964cffc12e6d76f673ec5be6
  Author: Benjamin Welton <welton@xxxxxxxxxxx>
  Date:   2018-10-03 (Wed, 03 Oct 2018)

  Changed paths:
    M dyninstAPI/src/emit-x86.C

  Log Message:
  -----------
  Modification to x86 emitter to support SW out of inst frames.

This patch contains changes to the emitter to support first party stackwalking out of inst's frames. For inst frames to be walkable, instrimentation frames must be enabled.

The following changes were made to support this:

- Insertion of the previous SP into the stack at a known location (2 slots above the FP).
- Insertion of a special word into the stack such that stackwalker can easily identify that this frame is an inst frame (and to select the correct walker). BEEFDEAD is located at +1 slot away from FP.
- The poping of these values from the stack at frame teardown.
- Fixes to the emitter to use scratch registers where hard coded ones were present before.

Total performance impact of this patch is an extra 5 instruction. 3 on frame creation, 2 on destruction.


  Commit: bc9c02d877bfb5a4d0e26d903d57d3cf4be77989
      https://github.com/dyninst/dyninst/commit/bc9c02d877bfb5a4d0e26d903d57d3cf4be77989
  Author: Benjamin Welton <welton@xxxxxxxxxxx>
  Date:   2018-10-03 (Wed, 03 Oct 2018)

  Log Message:
  -----------
  Merge branch 'master' of github.com:dyninst/dyninst


Compare: https://github.com/dyninst/dyninst/compare/69d17b17f427...bc9c02d877bf
      **NOTE:** This service has been marked for deprecation: https://developer.github.com/changes/2018-04-25-github-services-deprecation/

      Functionality will be removed from GitHub.com on January 31st, 2019.
[← Prev in Thread] Current Thread [Next in Thread→]
  • [DynInst_API:] [dyninst/dyninst] cc769c: New walker to walk out of Instrimentation Frames F..., Benjamin Welton <=