Skip to content

Gcc 16 switch - #502

Open
vineetgarc wants to merge 5 commits into
masterfrom
gcc-16-switch
Open

Gcc 16 switch#502
vineetgarc wants to merge 5 commits into
masterfrom
gcc-16-switch

Conversation

@vineetgarc

Copy link
Copy Markdown

No description provided.

Make the selftests build produce the test_progs-bpf_gcc binary, with the GCC
series chosen by a single CI variable:

- download-gh-release.sh: accept an optional tag prefix and pick the most recent
  release matching it, so "gcc-16-" tracks the latest GCC 16 build. An empty
  prefix keeps the previous latest-release behavior, and a full tag still works
  since a tag is a prefix of itself.
- kernel-build.yml: download the GCC BPF compiler and set BPF_GCC on x86_64 so
  the normal selftests build produces test_progs-bpf_gcc in the test artifact.
  The series comes from GCC_BPF_VERSION, defaulting to 15.

Plain "latest release" is ambiguous now that several GCC series are published
to the same repo, hence selecting by prefix.

This only builds the binary; the test runner is enabled separately.

Signed-off-by: Vineet Gupta <vineet.gupta@linux.dev>
Change the default GCC_BPF_VERSION from 15 to 16 so test_progs-bpf_gcc is built
with the latest GCC 16 release instead of GCC 15, and regenerate the GCC BPF
denylist to match what GCC 16 actually fails.

The denylist shrinks from 904 to 192 entries (61 whole tests, 131 subtests).
A test is denied outright only when nothing in it passes; otherwise just the
failing subtests are listed so the rest keep running.

Signed-off-by: Vineet Gupta <vineet.gupta@linux.dev>
Add test_progs-bpf_gcc back to the x86_64 test list so the GCC BPF selftests are
actually executed, not just built.

The runner was disabled back in Jan 2025 [1] because too many tests were failing
with GCC 15. With GCC 16 things have improved significantly so turn it back on.

Following is the data from two fresh CI runs:

  ┌─────────────────┬────────┬───────────────┐
  │                 │ gcc-15 │    gcc-16     │
  ├─────────────────┼────────┼───────────────┤
  │ Tests PASSED    │ 510    │ 640 (+25.5%)  │
  ├─────────────────┼────────┼───────────────┤
  │ Tests FAILED    │ 231    │ 100 (−56.7%)  │
  ├─────────────────┼────────┼───────────────┤
  │ Subtests PASSED │ 4051   │ 5750 (+41.9%) │
  ├─────────────────┼────────┼───────────────┤
  │ Subtests FAILED │ 1678   │ 344 (−79.5%)  │
  ├─────────────────┼────────┼───────────────┤
  │ Runtime         │ 72 min │ 11 min        │
  └─────────────────┴────────┴───────────────┘

[1] https://lore.kernel.org/bpf/87bjw6qpje.fsf@oracle.com/

Signed-off-by: Vineet Gupta <vineet.gupta@linux.dev>
The separate 'GCC BPF' job compiles test_progs-bpf_gcc purely as a build check
and uploads nothing. Earlier in this series the regular selftests build started
producing that binary and the vmtest runner started executing it, so the job now
rebuilds the same thing only to throw it away, costing an extra CodeBuild runner
on every pull request. Running the tests also subsumes the build check, since a
compile failure fails the build job just the same.

This is effectively a revert of vmtest commit 83c4015 ("GCC BPF: factor out
into a separate job (#338)"), which moved the GCC BPF build out of
kernel-build.yml. That was the right call at the time. The build ran
libbpf/ci/build-bpf-gcc, which compiled binutils and GCC from source on every
x86_64 build, sitting directly on the critical path of the main build job. And
the runner had been disabled a few weeks earlier in vmtest commit f7504ae
("Disable test_progs-bpf_gcc"), so nothing consumed the resulting binary and a
standalone compile check was all that remained of it.

Neither reason holds any more. vmtest commit 81846c8 ("GCC BPF: use
pre-built release") replaced the from-source build with a download of a
pre-built release, so folding it back into the build job costs a tarball fetch
rather than a full GCC build, and the runner re-enabled earlier in this series
consumes the binary again.

Nothing depends on the job, so remove it along with its workflow.

Signed-off-by: Vineet Gupta <vineet.gupta@linux.dev>
@vineetgarc
vineetgarc requested a review from theihor July 31, 2026 22:32
Temporary, do not merge. Pulls in the libbpf/ci change that re-runs the
denylisted tests after the main test_progs-bpf_gcc pass, so it can be
exercised before that change lands and v4 is re-tagged.

Only the kernel-test.yml pin is bumped; the veristat and asan jobs use
run-vmtest with a different script and are unaffected.

Drop this commit once libbpf/ci has merged the change.
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.

1 participant