Skip to content

toolchain: drop legacy gcc 8.4 pin on 18 ARM platforms#2162

Open
widgetii wants to merge 1 commit into
masterfrom
bump/gcc-8.4-platforms-to-13
Open

toolchain: drop legacy gcc 8.4 pin on 18 ARM platforms#2162
widgetii wants to merge 1 commit into
masterfrom
bump/gcc-8.4-platforms-to-13

Conversation

@widgetii
Copy link
Copy Markdown
Member

Summary

Drop the explicit `# Legacy` block from 18 defconfigs:

```

  • Legacy

  • BR2_TOOLCHAIN_EXTERNAL_GCC_8=y
  • BR2_GCC_VERSION_LEGACY=y
    ```

Without an explicit pin they fall through to `BR2_GCC_VERSION_13_X` (Buildroot 2024.02.10 default per `general/package/gcc/Config.in.host`), so cross-toolchains now build with gcc 13.3.0 instead of 8.4.0.

Platforms affected

Vendor Platforms
Goke (11) gk7102, gk7102s, gk7202v300_{lite,ultimate}, gk7205v200_{lite,original,ultimate}, gk7205v210_lite, gk7205v300_{lite,ultimate}, gk7605v100_lite
Grainmedia (2) gm8135_lite, gm8136_lite
Novatek (2) nt98562_lite, nt98566_lite
Xiongmai (3) xm510_lite, xm530_lite, xm550_lite

All 18 are ARM (oldest core is arm1176jzf_s on the gk7102 family) — well within gcc 13's supported set.

Why now

The legacy pin originated in #1726 ("[no ci] Set legacy GCC version for Goke", 2023) and propagated. Upstream gcc, musl, and libsanitizer have since caught up:

  • all-patches/gcc: scope libsanitizer-musl-compat patch to gcc 11+ #2161 just scoped the libsanitizer-musl-compat patch to gcc 11/12/13 subdirs (away from gcc 8.4), but the underlying root cause is that the gcc 8.4 path has been growing crustier — the `.cc` → `.cpp` source rename was just one symptom.
  • Folding all platforms onto a single host gcc cuts toolchain compile time, removes a class of "works in gcc 11+, broken on gcc 8" patch-scoping bugs going forward, and shrinks the matrix of variants the project has to validate against musl.

Test plan

  • Wait for CI's `Firmware (…)` matrix to land — each of the 18 affected platforms will rebuild its toolchain on first hit (the wget-spider skip-check sees the existing tarballs but those were built with gcc 8.4; this PR doesn't itself force a re-roll, so first verification is the firmware build step exercising the existing-with-old-gcc external toolchain — that should still link cleanly because the toolchain ABI hasn't changed).
  • After merge, run `gh release delete-asset toolchain --yes` for each of the 18 platforms and dispatch `toolchain.yml` to materially re-roll them with gcc 13. Verify they actually build under the new compiler.
  • Smoke a flash on one Goke camera (gk7205v200 lab unit) and one Xiongmai (xm530) to confirm runtime parity.

Out of scope

This PR does not bump kernel-headers selections (`BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_*` for the Xiongmai 3.0/3.4 etc. stays as is) — those are independent of the host compiler version.

Remove the explicit "# Legacy" three-line block (BR2_TOOLCHAIN_EXTERNAL_GCC_8=y +
BR2_GCC_VERSION_LEGACY=y) from all defconfigs that still carried it:

  Goke (11): gk7102, gk7102s, gk7202v300_{lite,ultimate},
             gk7205v200_{lite,original,ultimate}, gk7205v210_lite,
             gk7205v300_{lite,ultimate}, gk7605v100_lite
  Grainmedia (2): gm8135_lite, gm8136_lite
  Novatek (2): nt98562_lite, nt98566_lite
  Xiongmai (3): xm510_lite, xm530_lite, xm550_lite

Without an explicit pin these defconfigs fall through to
BR2_GCC_VERSION_13_X (Buildroot 2024.02.10 default per
general/package/gcc/Config.in.host), so the cross-toolchains rebuild
with gcc 13.3.0 instead of 8.4.0.

All 18 platforms are ARM (arm1176jzf_s through later Cortex-A cores)
and supported by gcc 13's musl/libsanitizer code paths — the recently
scoped libsanitizer-musl-compat patch (#2161) now applies as expected.
The legacy pin originated in #1726 ("Set legacy GCC version for Goke",
2023) but the rationale has dissolved as upstream gcc/musl/libsanitizer
caught up.
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