[DynInst_API:] [dyninst/dyninst] 5ce3f4: dataflowAPI: restore register/memory abslocs in co...


Date: Wed, 17 Jun 2026 14:14:45 -0700
From: bbiiggppiigg <noreply@xxxxxxxxxx>
Subject: [DynInst_API:] [dyninst/dyninst] 5ce3f4: dataflowAPI: restore register/memory abslocs in co...
  Branch: refs/heads/bbiiggppiigg/fix-regression-2042
  Home:   https://github.com/dyninst/dyninst
  Commit: 5ce3f496ba63ed1403ce3ec443320c62d8a79003
      https://github.com/dyninst/dyninst/commit/5ce3f496ba63ed1403ce3ec443320c62d8a79003
  Author: wuxx1279 <bbiiggppiigg@xxxxxxxxx>
  Date:   2026-06-17 (Wed, 17 Jun 2026)

  Changed paths:
    M dataflowAPI/src/AbslocInterface.C

  Log Message:
  -----------
  dataflowAPI: restore register/memory abslocs in convertAll

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] 5ce3f4: dataflowAPI: restore register/memory abslocs in co..., bbiiggppiigg <=