[DynInst_API:] COMMIT (3/3): Stack Analysis Updates


Date: Tue, 19 May 2015 10:21:00 -0500
From: Emily Gember-Jacobson <jacobson@xxxxxxxxxxx>
Subject: [DynInst_API:] COMMIT (3/3): Stack Analysis Updates
This series of commits includes bug fixes for stack analysis, as well as some new functionality to provide less conservative stack analysis results.

 ÂÂDefine >, <=, >=, and - operators for StackAnalysis::Height

 ÂÂAdd += operator for StackAnalysis::Height

  Bug fixes for arithmetic operations for StackAnalysis::Height
 ÂÂ
  Previously, most arithmetic involving TOP returned TOP. This is not
  correct, and the operators have been updated accordingly.

 ÂÂRedefine delta and abs to be of type long in StackAnalysis::TransferFunc

  Extend stack analysis transfer functions to handle targets that should be
  "rounded" to TOP or BOTTOM.
 ÂÂ
  This annotate transfer functions that have the following characteristic:
  if target is TOP, keep as TOP
  else, target must be set to BOTTOM
  E.g., sign-extending a register:
   if the register had an uninitialized stack height (TOP),
    the sign-extension has no effect
   if the register had a valid or notunique (BOTTOM) stack height,
    the sign-extension must result in a BOTTOM stack height

 ÂÂIn stack analysis, add handlers for sign- and zero-extend instructions.

 ÂÂModify StackAnalysis::findDefinedHeights to include registers with a height of BOTTOM.

  Redefine StackAnalysis::handleDefault to round a register to TOP or BOTTOM,
  instead of always setting to BOTTOM.

 ÂÂUpdated StackAnalysis::handleAddSub to also operate on non-SP registers.

  Update StackAnalysis::handleMov to handle non register-register moves.

  Handle complex LEA instructions in stack analysis.
 ÂÂ
  Existing stack analysis only handled LEA instructions with a single source
  register. This ignores LEA instructions where the source is an SIB
  _expression_. A new transfer func, sibFunc, has been added, and the apply()
  and accumulate() functions have been updated to properly handle this new
  transfer function.
[← Prev in Thread] Current Thread [Next in Thread→]
  • [DynInst_API:] COMMIT (3/3): Stack Analysis Updates, Emily Gember-Jacobson <=