Skip to content

Pin the RISC-V toolchain to xPack GCC 14.3.0 - #54

Merged
fdesbiens merged 1 commit into
eclipse-threadx:devfrom
fdesbiens:fix/pin-riscv-gcc-14.3
Aug 31, 2026
Merged

Pin the RISC-V toolchain to xPack GCC 14.3.0#54
fdesbiens merged 1 commit into
eclipse-threadx:devfrom
fdesbiens:fix/pin-riscv-gcc-14.3

Conversation

@fdesbiens

Copy link
Copy Markdown
Contributor

Pin the RISC-V toolchain to xPack GCC 14.3.0

Why

After #53 the ARM job pins Arm GNU Toolchain 14.3.Rel1, but the PolarFire job still pinned xPack riscv-none-elf-gcc 14.2.0-1 — leaving the two cross-compilers in one pipeline a minor release apart for no reason. xPack published v14.3.0-1 on 2025-10-23, so both targets can sit on GCC 14.3 while still satisfying the AGENTS.md GCC 14 requirement.

What changed

One step, three values: the release tag, the tarball name, and the published SHA256.

Before After
Release v14.2.0-1 v14.3.0-1
GCC 14.2.0 14.3.0
SHA256 a5eb7075…6200 be1768ef…c726

No other hardening was needed here. Unlike the ARM step before #53, this job already verified its download with sha256sum --check --strict, which is why #53's checksum fix did not apply to it.

Verification

Installed xPack GNU RISC-V Embedded GCC 14.3.0 locally and ran the full pipeline by hand:

  • Clean build of polarfire_icicle_demo.elf.
  • Headless Renode suite passes, exit 0, with every startup self-test green — _sbrk bounds, the HWTimer catch-up clamp, PLIC Hart 1 configuration (IRQ 91 prio=1 en=0x08000000 thresh=0 mie=0x800), the queue round-trip, ThreadX ticks, the LM75 alarm, and the PLIC RX interrupt.
  • Checksum verified against the value published in the release assets.

One pre-existing issue, deliberately not folded in

The build emits:

ld: warning: app/polarfire_icicle_demo.elf has a LOAD segment with RWX permissions

I checked whether the bump introduced it: it did not. The current pipeline on 14.2.0 emits the identical warning (visible in the run 33430244827 build log, from riscv-none-elf/14.2.0). It points at the PolarFire linker script placing writable and executable content in one segment, and deserves its own change rather than being buried in a version bump.

Follow-up worth considering

The xPack and Renode downloads still re-fetch on every run — roughly 400 MB and 200 MB respectively, the latter in two separate jobs. actions/cache, as #53 added for the ARM toolchain, would apply to all three.

The PolarFire job pinned xPack riscv-none-elf-gcc 14.2.0-1 while the ARM job
now pins Arm GNU Toolchain 14.3.Rel1, so the two cross-compilers in this
pipeline were a minor release apart for no reason. xPack published v14.3.0-1
on 2025-10-23; moving to it puts both targets on GCC 14.3 and keeps the
AGENTS.md GCC 14 requirement satisfied.

The published SHA256 is updated alongside the version. The existing checksum
verification is kept as it was: this job already verified its download, which
is why it needed no other hardening.

Verified locally with xPack GNU RISC-V Embedded GCC 14.3.0:

  - Clean build of polarfire_icicle_demo.elf.
  - Headless Renode suite passes, exit 0, with all startup self-tests green:
    _sbrk bounds, HWTimer catch-up clamp, PLIC Hart 1 configuration, the queue
    round-trip, ThreadX ticks, the LM75 alarm, and the PLIC RX interrupt.

The linker warning about a LOAD segment with RWX permissions is unchanged by
this bump. It is emitted identically by 14.2.0 in the current pipeline, so it
predates this change and is left for separate treatment rather than folded in
here.

Assisted-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
@fdesbiens
fdesbiens merged commit a166e86 into eclipse-threadx:dev Aug 31, 2026
5 checks passed
@fdesbiens
fdesbiens deleted the fix/pin-riscv-gcc-14.3 branch August 31, 2026 19:34
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