Skip to content

fix(toolchain): resolve ClearCore ARM GCC9 standard headers on Windows #1701

Closed

Description

@zackees

Context

The expanded real firmware regression for #1672 passes Feather M0, Feather M4 with LTO, and ClearCore locally on Linux. Hosted Windows run 39746745165 passes workspace Clippy/tests and both Feather firmware builds, then fails ClearCore's EthernetServer.cpp: ARM GCC 9.2.1 bits/c++config.h cannot include bits/os_defines.h.

ClearCore selects ArmGcc8Toolchain (historical type name, GCC9), package 1.90201.191206. The published Windows archive was downloaded and its SHA256 verified as 31301e144002f2043f60c518b87327dfcfca9f1dc0c1add72322d553d5733f0e. It contains regular os_defines.h files, including the hard-float Cortex-M4 multilib directory. Therefore the source package is not simply missing that member. Installed layout and actual compiler include-search behavior need to distinguish extraction/cache incompleteness from Windows GCC path resolution.

Proposal

Diagnose the installed header and real compiler search paths on Windows, fix the owning package/compiler path boundary, and retain the real ClearCore regression introduced alongside the SAMD linkage fix.

Acceptance criteria

  • RED -> GREEN on real Windows ARM GCC: reproduce the missing-header failure, then build ClearCore firmware successfully.
  • Both existing Feather architecture/interrupt overrides, including LTO, remain passing.
  • Preserve real workspace and firmware tests; do not skip ClearCore or downgrade compiler diagnostics.
  • Add focused coverage for the confirmed root cause and validate existing caches if installer completeness is involved.
  • No new workflow files, fbuild clones/worktrees, hardcoded runtime USB data, or Bosn requirement.

Decisions

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions