[DynInst_API:] [dyninst/dyninst] 100455: Fix detection of conditional jump in slicing (#2062)


Date: Wed, 19 Nov 2025 22:17:33 -0800
From: wxrdnx <noreply@xxxxxxxxxx>
Subject: [DynInst_API:] [dyninst/dyninst] 100455: Fix detection of conditional jump in slicing (#2062)
  Branch: refs/heads/angushe/instruction-api-riscv
  Home:   https://github.com/dyninst/dyninst
  Commit: 1004557a9d92e2f909a32bd1ab045672e0410673
      https://github.com/dyninst/dyninst/commit/1004557a9d92e2f909a32bd1ab045672e0410673
  Author: bbiiggppiigg <bbiiggppiigg@xxxxxxxxx>
  Date:   2025-11-13 (Thu, 13 Nov 2025)

  Changed paths:
    M dataflowAPI/src/slicing.C

  Log Message:
  -----------
  Fix detection of conditional jump in slicing (#2062)

* Fix detection of conditional jump in slicing

Currently, in backward slicing, the detection of the conditional jump
assumes both
COND_TAKEN and COND_NOT_TAKEN are present.

However, under current parsing implementation, it could be the case
where only
one of the edges are present when parsing the indirect control flow in
the fallthrough block.

As a result, when backward slicing on the jump table index, the slicer
would miss the fact that
predecessor block ends with a conditional jump instruction, and fail to
compute the bound.

Paritally Fixes #2050


  Commit: 9345b697f7572184949fc38c1613f776ec739632
      https://github.com/dyninst/dyninst/commit/9345b697f7572184949fc38c1613f776ec739632
  Author: bbiiggppiigg <bbiiggppiigg@xxxxxxxxx>
  Date:   2025-11-13 (Thu, 13 Nov 2025)

  Changed paths:
    M dataflowAPI/rose/x86_64InstructionSemantics.h

  Log Message:
  -----------
  Fix semantic for move 32 bit register (#2063)

On x86_64, the upper 32 bits should be zeroed when moving a
32 bit value, except the sepcial case for xchg eax,eax


  Commit: fe39c929f3350ac3a1a9c3b0b77dc6752b70d345
      https://github.com/dyninst/dyninst/commit/fe39c929f3350ac3a1a9c3b0b77dc6752b70d345
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-11-13 (Thu, 13 Nov 2025)

  Changed paths:
    M dataflowAPI/rose/x86_64InstructionSemantics.h

  Log Message:
  -----------
  Update semantics for ROSE x86 xchg nop (#2065)

When an operand is a memory reference,
isSgAsmx86RegisterReferenceExpression returns nullptr because it's of
type SgAsmx86MemoryReferenceExpression.


  Commit: 342d6f7b34f1e0281876cc56b872a87dca39d691
      https://github.com/dyninst/dyninst/commit/342d6f7b34f1e0281876cc56b872a87dca39d691
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-11-13 (Thu, 13 Nov 2025)

  Changed paths:
    M cmake/tpls/DyninstCapstone.cmake
    M docker/build_capstone.sh
    M docker/dependencies.versions

  Log Message:
  -----------
  Increase minimum Capstone version to 6.0.0-Alpha5 (#2061)

* Require at least 6.0.0-Alpha5

The 'capstone::capstone' target was removed just before the
6.0.0-Alpha5. By making this the minimum, we can guaratee we get 1) a
version of Capstone built with PIC that is needed for linking into
libinstructionAPI, and 2) the needed RISC-V stuff.

* Require the Capstone shared library

* Remove use of BUILD_SHARED_LIBS

CAPSTONE_BUILD_SHARED_LIBS automatically sets that.


  Commit: 97ebe21efc1a6c1105f37c75c51537292d2d6e68
      https://github.com/dyninst/dyninst/commit/97ebe21efc1a6c1105f37c75c51537292d2d6e68
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-11-13 (Thu, 13 Nov 2025)

  Changed paths:
    M .github/workflows/pr-tests.yaml

  Log Message:
  -----------
  GitHubCI: require external-test to run (#2066)


  Commit: f2fd25934c05d235f5fab12a4fe70b8089bb0cb5
      https://github.com/dyninst/dyninst/commit/f2fd25934c05d235f5fab12a4fe70b8089bb0cb5
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-11-15 (Sat, 15 Nov 2025)

  Changed paths:
    M .github/workflows/build-opts.yaml
    M .github/workflows/compiler-multibuild.yaml
    M .github/workflows/libabigail.yaml

  Log Message:
  -----------
  GitHub CI: limit where known binary tests are run (#2068)

There's no need to run those tests when doing build tests. Running the unit, integration,
and regression tests is needed to validate the build is usable.


  Commit: 23c77ca55427d3f33902776fb988cd77cacc24b8
      https://github.com/dyninst/dyninst/commit/23c77ca55427d3f33902776fb988cd77cacc24b8
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-11-15 (Sat, 15 Nov 2025)

  Changed paths:
    M .github/workflows/consumers.yaml

  Log Message:
  -----------
  GitHub CI: re-enable HPCtoolkit build on Fedora (#2069)

The bootstrapping issue in spack has been resolved.

Effectively reverts 8e070fff1204.


  Commit: 0f569612d1cd62131dbdee71ca1643d8a6c242e1
      https://github.com/dyninst/dyninst/commit/0f569612d1cd62131dbdee71ca1643d8a6c242e1
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-11-15 (Sat, 15 Nov 2025)

  Changed paths:
    M docker/build.sh

  Log Message:
  -----------
  Fix build error in docker/build.sh (#2064)

I do not know why, but when the install directory ($dest_dir) is
manually created with 'mkdir' instead of letting it be implicitly
created by 'cmake --build', 'ctest' fails to find the tests- even when
I have confirmed they are present.

I've added '--no-tests=error' to ensure that ctest fails when no tests
are run.


  Commit: d7a6b0d1ff01a38edf9adfcc7037526ce9318276
      https://github.com/dyninst/dyninst/commit/d7a6b0d1ff01a38edf9adfcc7037526ce9318276
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-11-16 (Sun, 16 Nov 2025)

  Changed paths:
    M .github/workflows/consumers.yaml

  Log Message:
  -----------
  GitHub CI: fix yaml for hpctoolkit job (#2070)


  Commit: 65746938d4bf274eebf1d92420f2d39b3d5d1724
      https://github.com/dyninst/dyninst/commit/65746938d4bf274eebf1d92420f2d39b3d5d1724
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-11-16 (Sun, 16 Nov 2025)

  Changed paths:
    M cmake/DyninstOptions.cmake
    M tests/CMakeLists.txt

  Log Message:
  -----------
  Update DYNINST_ENABLE_TESTS option (#2067)

It now takes several possible arguments rather than just being turned
on/off.


  Commit: a99222df9ae5145c3530c36ba43c435ec4dcd748
      https://github.com/dyninst/dyninst/commit/a99222df9ae5145c3530c36ba43c435ec4dcd748
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-11-16 (Sun, 16 Nov 2025)

  Changed paths:
    M .github/actions/build/action.yaml
    M .github/workflows/libabigail.yaml
    M docker/build.sh
    M tests/CMakeLists.txt
    A tests/cft_tests.cpp
    A tests/cft_tests.h
    M tests/integration/CMakeLists.txt
    R tests/integration/InstructionAPI/decoder/CMakeLists.txt
    R tests/integration/InstructionAPI/decoder/cft_tests.cpp
    R tests/integration/InstructionAPI/decoder/cft_tests.h
    R tests/integration/InstructionAPI/decoder/memory_tests.cpp
    R tests/integration/InstructionAPI/decoder/memory_tests.h
    R tests/integration/InstructionAPI/decoder/register_tests.cpp
    R tests/integration/InstructionAPI/decoder/register_tests.h
    A tests/memory_tests.cpp
    A tests/memory_tests.h
    A tests/register_tests.cpp
    A tests/register_tests.h
    M tests/unit/CMakeLists.txt
    A tests/unit/dyninstAPI/CMakeLists.txt
    M tests/unit/instructionAPI/CMakeLists.txt
    M tests/unit/instructionAPI/syscall-x86.cpp
    M tests/unit/parseAPI/lea-nop-x86.cpp

  Log Message:
  -----------
  Refactor tests (#2056)

* Move decoder test infrastructure to root of tests directory

Naturally, these turned out to be more useful than just for testing
the decoders.

* Update error messages in syscall-x86

* Move syscall-x86::main to top of file

This makes it easier to see the core of the test before the details.

* Don't fail early in lea-nop-x86

* Move dyninst/emitter cmake into subdir

* Move instructionAPI/AST cmake into subdir

* Don't fail early when decode fails

* Clean up run_32

* Don't enable any cmake tests by default


  Commit: 32c3f1b0ce839f3ade8457716a041f6125575abb
      https://github.com/dyninst/dyninst/commit/32c3f1b0ce839f3ade8457716a041f6125575abb
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-11-17 (Mon, 17 Nov 2025)

  Changed paths:
    M docker/build.sh

  Log Message:
  -----------
  GitHub CI: disable cmake tests by default (#2071)

* GitHub CI: disable cmake tests by default

This should have been part of #2056.

* Remove old debug code


  Commit: 263a1d8c9a9ebb4660907a0d89c4a9283976a50e
      https://github.com/dyninst/dyninst/commit/263a1d8c9a9ebb4660907a0d89c4a9283976a50e
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-11-17 (Mon, 17 Nov 2025)

  Changed paths:
    M cmake/DyninstOptions.cmake
    M parseAPI/CMakeLists.txt
    R parseAPI/h/GraphAdapter.h
    R parseAPI/src/GraphAdapter.C

  Log Message:
  -----------
  Remove ENABLE_PARSE_API_GRAPHS (#2072)

This was broken by 69fb1b45b in 2014 when const_blocklist changed from
a std::vector to a boost::iterator_range.


  Commit: 53b97f6839aca8eec14109a756ef6cf034e4140c
      https://github.com/dyninst/dyninst/commit/53b97f6839aca8eec14109a756ef6cf034e4140c
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-11-17 (Mon, 17 Nov 2025)

  Changed paths:
    M instructionAPI/h/Instruction.h
    M instructionAPI/src/Instruction.C
    M instructionAPI/src/InstructionDecoder-aarch64.C
    M instructionAPI/src/InstructionDecoder-power.C

  Log Message:
  -----------
  Refactor Instruction raw representation (#2052)

* Replace raw_instruction_t with std::array<uint8_t, maxInstructionLength>

* Make m_size a uint8_t

This drops the size of the Instruction from 344 to 366 bytes due to
improved layout. Reducing the length of m_RawInsn has no effect.

* Update default ctor

This could use default class member initialization, instead. I opted to
do it this way since none of the other members is default-initialized
currently.


  Commit: b9ea682ec7cdb74c28d7a59075e6bac7d97eb225
      https://github.com/dyninst/dyninst/commit/b9ea682ec7cdb74c28d7a59075e6bac7d97eb225
  Author: wxrdnx <wxrdnx@xxxxxxxxxxxxxx>
  Date:   2025-11-20 (Thu, 20 Nov 2025)

  Changed paths:
    M .github/actions/build/action.yaml
    M .github/workflows/build-opts.yaml
    M .github/workflows/compiler-multibuild.yaml
    M .github/workflows/consumers.yaml
    M .github/workflows/pr-tests.yaml
    M cmake/DyninstOptions.cmake
    M cmake/tpls/DyninstCapstone.cmake
    M dataflowAPI/rose/x86_64InstructionSemantics.h
    M dataflowAPI/src/slicing.C
    M docker/build.sh
    M docker/build_capstone.sh
    M docker/dependencies.versions
    M instructionAPI/h/Instruction.h
    M instructionAPI/src/Instruction.C
    M instructionAPI/src/InstructionDecoder-aarch64.C
    M instructionAPI/src/InstructionDecoder-power.C
    M parseAPI/CMakeLists.txt
    R parseAPI/h/GraphAdapter.h
    R parseAPI/src/GraphAdapter.C
    M tests/CMakeLists.txt
    A tests/cft_tests.cpp
    A tests/cft_tests.h
    M tests/integration/CMakeLists.txt
    R tests/integration/InstructionAPI/decoder/cft_tests.cpp
    R tests/integration/InstructionAPI/decoder/cft_tests.h
    R tests/integration/InstructionAPI/decoder/memory_tests.cpp
    R tests/integration/InstructionAPI/decoder/memory_tests.h
    R tests/integration/InstructionAPI/decoder/register_tests.cpp
    R tests/integration/InstructionAPI/decoder/register_tests.h
    A tests/memory_tests.cpp
    A tests/memory_tests.h
    A tests/register_tests.cpp
    A tests/register_tests.h
    M tests/unit/CMakeLists.txt
    A tests/unit/dyninstAPI/CMakeLists.txt
    M tests/unit/instructionAPI/CMakeLists.txt
    M tests/unit/instructionAPI/syscall-x86.cpp
    M tests/unit/parseAPI/lea-nop-x86.cpp

  Log Message:
  -----------
  Merge branch 'master' into angushe/instruction-api-riscv


  Commit: 20c02d913bb38510a1c110afc004211e8b51a099
      https://github.com/dyninst/dyninst/commit/20c02d913bb38510a1c110afc004211e8b51a099
  Author: wxrdnx <wxrdnx@xxxxxxxxxxxxxx>
  Date:   2025-11-20 (Thu, 20 Nov 2025)

  Changed paths:
    M tests/integration/CMakeLists.txt
    R tests/integration/InstructionAPI/decoder/CMakeLists.txt

  Log Message:
  -----------
  Merge into master


Compare: https://github.com/dyninst/dyninst/compare/6d7a45483b8d...20c02d913bb3

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→]