[DynInst_API:] [dyninst/dyninst] 55a533: dataflowAPI: restore register/memory abslocs in co...


Date: Thu, 18 Jun 2026 23:49:00 -0700
From: bbiiggppiigg <noreply@xxxxxxxxxx>
Subject: [DynInst_API:] [dyninst/dyninst] 55a533: dataflowAPI: restore register/memory abslocs in co...
  Branch: refs/heads/master
  Home:   https://github.com/dyninst/dyninst
  Commit: 55a53378f11004795d7d7e2a43dd5368c5caaf39
      https://github.com/dyninst/dyninst/commit/55a53378f11004795d7d7e2a43dd5368c5caaf39
  Author: bbiiggppiigg <bbiiggppiigg@xxxxxxxxx>
  Date:   2026-06-19 (Fri, 19 Jun 2026)

  Changed paths:
    M dataflowAPI/src/AbslocInterface.C

  Log Message:
  -----------
  dataflowAPI: restore register/memory abslocs in convertAll (#2296)

Commit 84d95d0 ("Deprecate Expression::getUses") rewrote
AbsRegionConverter::convertAll(Expression, ...) to route every used
register through the expression-aware 4-arg convert() overload. That
overload evaluates an expression as a memory address and only binds
SP/FP/PC; any other register is treated as an undefined address and
collapses to Absloc::Heap. It also dropped the Dereference branch that
classified the accessed memory location.

This regressed AMDGPU indirect control flow: the SGPR pair feeding
S_SETPC_B64 / S_SWAPPC_B64 (and the SGPRs defined by the address
arithmetic that produces it) became Heap abslocs instead of register
abslocs, so the def/use chains no longer connected and the indirect
target could not be resolved. It also dropped the immediate offset from
stack/frame memory operands on other architectures.

Restore the pre-84d95d0 two-path behavior while keeping the modern
getUsedRegisters() API instead of the deprecated getUses():
  - classify a memory dereference via the 4-arg overload on the whole
    address subexpression (offsets preserved -> correct stack/frame/mem)
  - add the registers the expression reads as plain register abslocs via
    the register-preserving 1-arg convert() overload

Co-authored-by: Claude Opus 4.8 <noreply@xxxxxxxxxxxxx>



To unsubscribe from these emails, change your notification settings at https://github.com/dyninst/dyninst/settings/notifications
[← Prev in Thread] Current Thread [Next in Thread→]
  • [DynInst_API:] [dyninst/dyninst] 55a533: dataflowAPI: restore register/memory abslocs in co..., bbiiggppiigg <=