feat: restore debug build for c part of oneDAL - #3725
Open
Alexandr-Solovev wants to merge 4 commits into
Open
Conversation
Alexandr-Solovev
marked this pull request as ready for review
July 31, 2026 15:13
Alexandr-Solovev
requested review from
ahuber21,
ethanglaser,
homksei,
icfaust and
napetrov
as code owners
July 31, 2026 15:13
Contributor
There was a problem hiding this comment.
Pull request overview
This PR strengthens the Linux ABI conformance job by improving ABI diff fidelity (via DWARF-enabled host builds) and adding an additional guardrail that detects cross-flavor public symbol drift between host (_c) and DPC++ (_dpc) library variants.
Changes:
- Build host-side libraries with
REQDBG=symbols(via--debug symbols) soabidiffcan use DWARF for deeper ABI comparisons. - Add a cross-flavor “newly-exported symbols” drift check in
.ci/scripts/abi_check.shto fail CI when host vs DPC++ newly-added public symbols diverge. - Improve ABI job console messaging to clarify which libraries use DWARF-based checks vs ELF-symbol-only fallback.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| .github/workflows/ci.yml | Enables debug-symbol builds for host libraries used by the ABI job and documents why DPC++ remains non-DWARF in CI. |
| .ci/scripts/abi_check.sh | Adds a cross-flavor symbol drift check after abidiff to detect mismatched newly-exported public symbols. |
Alexandr-Solovev
force-pushed
the
dev/asolovev_dwarf_addition
branch
from
August 3, 2026 06:20
d408aa2 to
2f0223d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Summary
Strengthens the ABI check job in two ways:
abidiffcan use DWARF and perform full function/variable sub-type diffs (previously it only saw stripped ELF symbols and degraded to add/remove detection on every library).abi_check.shthat compares the set of newly-exported symbols between the host (_c) and DPC++ flavors of each library and hard-fails when they diverge.Changes
.github/workflows/ci.ymlMake daalandMake onedal(targetoneapi_c) now pass--debug symbolstobuild.sh, solibonedal_core.so,libonedal.so,libonedal_thread.so, andlibonedal_parameters.soship DWARF into the ABI job.oneapi_dpcintentionally stays without debug symbols — DPC++ device DWARF blows up per-object size and icx peak RSS at-j20and OOMs the runner. ATODOcomment documents follow-ups (-Xarch_device -g0/-fsycl-device-debug=none/ larger runner) for enabling it later..ci/scripts/abi_check.shAdds a supplemental block after the existing per-library
abidiffloop:(_c, _dpc)library pair(
libonedal.so↔libonedal_dpc.so,libonedal_parameters.so↔libonedal_parameters_dpc.so):.dynsymsymbols on both sides(
comm -13overnm -D --defined-only --extern-onlyoutput against__release_lnx_main).::error::and incrementsRETURN_CODE, turning CI red..dynsymalone — no debug info required, so it complements the DWARF-basedabidiffpass on the stripped DPC++ libraries.libonedal_core.so/libonedal_thread.soskipped (no_dpccounterpart).if [ ! -f ]guards make the block a no-op when a flavor is missing.Rationale
Under the pre-change layout, the DPC++ libraries were built stripped, so
abidiffonlibonedal_dpc.sosilently degraded to symbol-add/remove detection while advertising itself as an ABI check. Any layout change, return-type break, or member-function signature change on a class exported by the DPC++ flavor would pass. The cross-flavor drift check gives us a cheap second line of defense: a PR that adds a public symbol to only one flavor almost always indicates either a missed re-export or an unintentional divergence of the public surface, and a reviewer should look at it either way.Completeness and readability
Testing
Performance