Skip to content

ci(dyninst): Add workflows to test rocprofiler-systems - #30

Open
kcossett-amd wants to merge 6 commits into
dyninst_13from
users/kcossett-amd/rocprof-sys-dyninst-workflows
Open

ci(dyninst): Add workflows to test rocprofiler-systems#30
kcossett-amd wants to merge 6 commits into
dyninst_13from
users/kcossett-amd/rocprof-sys-dyninst-workflows

Conversation

@kcossett-amd

@kcossett-amd kcossett-amd commented Aug 17, 2026

Copy link
Copy Markdown

Motivation

JIRA ID: AIRPFOSYST-726

Have workflows build and install dyninst, followed by building and running the rocprofiler-systems ctest suite. Only ROCm 7.2 is exercised, there is no real reason to test multiple ROCm versions.

Technical Details

Source file changes:

  • Annotable.h: Required for GCC14 on RHEL10 as -Wall flag adds -Wcalloc-transposed-args.
  • indexed_symbol.hpp: indexed_symbols::erase() called std::remove on its four secondary indexes and discarded the result, so erased symbols stayed findable by offset and name, leaving the indexes disagreeing with the master table. Adding erase(it, end()) completes the idiom. Gcc 14's [[nodiscard]] on std::remove turned it into a build failure.
  • DyninstWarnings.cmake: Added GCC14_ arm raising the frame-size cerling for InstructionDecode-power.C only.

Workflows:

  • tpl-versions.env: Pins oneTBB, elfutils, and binutils to what rocprofiler-systems ships.
  • built-tpls.sh: Builds the dyninst deps from source.
  • build.yaml: Reusable builder for dependencies and dyninst.
  • pr-tests.yaml: Six-image matrix that calls the builder script.
  • Deleted libabigail.yaml: Uneeded.
  • rocprofiler-systems.yaml: Builds rocprofiler-systems and runs only the tests that exercise dyninst (runtime_instrument, binary_rewrite, binaries) through rocprofiler-systems's run_ci.py.
  • Deleted compiler-multibuild.yaml: Weekly cron and the only caller of the old build.yaml interface; this fork runs CI per PR only.

If you are wondering what compiler flags dyninst is built with (all the warning ones), see DyninstWarnings.cmake.

Test Plan

The new workflows.

Test Result

See the result of the new workflows. I will verify that tests actually ran.

image image ## Submission Checklist

@kcossett-amd

kcossett-amd commented Aug 17, 2026

Copy link
Copy Markdown
Author

I'll leave two notes:

  1. I chose ROCm 7.2 as it was the quickest for me to setup. Though I suppose we could switch to pulling from TheRock and then rebuilding, in a similar vain to our gfx950 workflow.
  2. For CTests, I am only running those that have the runtime_instrument, binary_rewrite and binaries labels.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds ROCm 7.2 CI coverage for building Dyninst and testing it through rocprofiler-systems.

Changes:

  • Adds dependency-building and Dyninst build workflows.
  • Adds downstream rocprofiler-systems tests.
  • Fixes GCC 14 build errors and symbol-index removal.

Reviewed changes

Copilot reviewed 9 out of 10 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
.github/workflows/build.yaml Builds dependencies and Dyninst.
.github/workflows/pr-tests.yaml Defines the six-image build matrix.
.github/workflows/rocprofiler-systems.yaml Runs downstream Dyninst-facing tests.
.github/workflows/libabigail.yaml Removes obsolete ABI checks.
scripts/build-tpls.sh Builds pinned dependencies.
scripts/tpl-versions.env Pins dependency versions.
cmake/DyninstWarnings.cmake Adjusts GCC 14 frame warning threshold.
common/h/Annotatable.h Corrects calloc argument ordering.
symtabAPI/src/indexed_symbols.hpp Completes erase-remove operations.
.gitignore Ignores dependency build output.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread .github/workflows/build.yaml
Comment thread .github/workflows/rocprofiler-systems.yaml
Comment thread .github/workflows/rocprofiler-systems.yaml Outdated
@kcossett-amd

Copy link
Copy Markdown
Author

Should probably also add the ASAN workflows as well

@kcossett-amd

Copy link
Copy Markdown
Author

Should probably also add the ASAN workflows as well

On second thought, probably not needed. The ASan workflows are for rocprofiler-systems only, and whilst #29 was discovered by ASan, it was a rocprofiler-systems change that surfaced it, not Dyninst. And running ASan on all of dyninst with some examples would likely trip it up. IIRC when I did it with valgrind, I did not have a lot of fun

@kcossett-amd
kcossett-amd marked this pull request as ready for review August 18, 2026 15:52
@kcossett-amd
kcossett-amd requested a review from a team as a code owner August 18, 2026 15:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants