Skip to content

[bsp][ESP32_C3] match Windows GNU ld object paths in IRAM globs - #11816

Open
cms19859230182-lang wants to merge 2 commits into
RT-Thread:masterfrom
cms19859230182-lang:bsp/esp32c3-windows-ld-glob
Open

cms19859230182-lang wants to merge 2 commits into
RT-Thread:masterfrom
cms19859230182-lang:bsp/esp32c3-windows-ld-glob

Conversation

@cms19859230182-lang

@cms19859230182-lang cms19859230182-lang commented Sep 21, 2026

Copy link
Copy Markdown

拉取/合并请求描述:(PR description)

[

为什么提交这份PR (why to submit this PR)

On Windows, GNU ld reports object files with backslash paths (for example libcpu\risc-v\common\...o). The ESP32-C3 linker script used slash-only input-section and EXCLUDE_FILE globs such as *riscv/interrupt.*. Those globs never matched, so IRAM text/data were not placed as intended. The resulting firmware then hit an illegal instruction / access fault before msh on ESP32-C3-DevKitM-1.

This was found while building the official bsp/ESP/ESP32_C3 on Windows (Espressif RISC-V GCC 11.2.0 + RT-Thread Env). Linux/macOS paths still use /, so they were not affected.

你的解决方案是什么 (what is your solution)

In bsp/ESP/ESP32_C3/idf_port/ld/sections.ld, replace path separators inside those file globs with ?. GNU ld treats ? as a single-character wildcard, so it matches both / and \. Header comments and the Generated from: /home/... path are left unchanged. No .config change and no chip-revision workaround.

Verified: ESP32-C3-DevKitM-1, Windows, official BSP, msh prompt after this linker-script change. Notes: https://notes.seteiro.xyz/posts/esp32c3-devkitm1-msh/

请提供验证的bsp和config (provide the config and bsp)

  • BSP: bsp/ESP/ESP32_C3

  • .config: none

  • action:

]

当前拉取/合并请求的状态 Intent for your PR

必须选择一项 Choose one (Mandatory):

  • 本拉取/合并请求是一个草稿版本 This PR is for a code-review and is intended to get feedback
  • 本拉取/合并请求是一个成熟版本 This PR is mature, and ready to be integrated into the repo

代码质量 Code Quality:

我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:

  • 已经仔细查看过代码改动的对比 Already check the difference between PR and old code
  • 代码风格正确,包括缩进空格,命名及其他风格 Style guide is adhered to, including spacing, naming and other styles
  • 没有垃圾代码,代码尽量精简,不包含#if 0代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up
  • 所有变更均有原因及合理的,并且不会影响到其他软件组件代码或BSP All modifications are justified and not affect other components or BSP
  • 对难懂代码均提供对应的注释 I've commented appropriately where code is tricky
  • 代码是高质量的 Code in this PR is of high quality
  • 已经使用clang-format 源码格式化工具确保格式符合RT-Thread代码规范 This PR has been formatted with clang-format and complies with RT-Thread code specification
  • 如果是新增bsp, 已经添加ci检查到.github/ALL_BSP_COMPILE.json 详细请参考链接BSP自查

Windows GNU ld reports object paths with backslashes, so slash-based
input-section and EXCLUDE_FILE globs never matched. Replace those
path separators with '?' so both Unix and Windows builds place IRAM
code correctly. Comments and generated-from paths are unchanged.
@CLAassistant

CLAassistant commented Sep 21, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@github-actions

Copy link
Copy Markdown

👋 感谢您对 RT-Thread 的贡献!Thank you for your contribution to RT-Thread!

为确保代码符合 RT-Thread 的编码规范,请在你的仓库中执行以下步骤运行代码格式化工作流(如果格式化CI运行失败)。
To ensure your code complies with RT-Thread's coding style, please run the code formatting workflow by following the steps below (If the formatting of CI fails to run).


🛠 操作步骤 | Steps

  1. 前往 Actions 页面 | Go to the Actions page
    点击进入工作流 → | Click to open workflow →

  2. 点击 Run workflow | Click Run workflow

  • Use workflow from 保持默认分支(通常为 master
    Keep the default branch (usually master) in Use workflow from
  • branch 输入框填写 PR 分支 bsp/esp32c3-windows-ld-glob
    Enter PR branch bsp/esp32c3-windows-ld-glob in the branch field
  • 设置需排除的文件/目录(目录请以"/"结尾)
    Set files/directories to exclude (directories should end with "/")
  1. 等待工作流完成 | Wait for the workflow to complete
    格式化后的代码将作为独立提交推送至你的分支。
    The formatting changes will be pushed to your branch as a separate commit.

完成后,提交将自动更新至 bsp/esp32c3-windows-ld-glob 分支,关联的 Pull Request 也会同步更新。
Once completed, commits will be pushed to the bsp/esp32c3-windows-ld-glob branch automatically, and the related Pull Request will be updated.

如有问题欢迎联系我们,再次感谢您的贡献!💐
If you have any questions, feel free to reach out. Thanks again for your contribution!

@github-actions github-actions Bot added BSP BSP: ESP32 BSP related with ESP labels Sep 21, 2026
@Rbb666
Rbb666 requested a lite review from Copilot September 22, 2026 13:16

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🔵 Needs a closer look

The new *bt?* glob can unintentionally match non-bt/ inputs (e.g. libbtdm_app.a) and misplace .bss, breaking the _btdm_bss_* region markers.

Review effort: Lite
Findings: None

What changed in this PR

This PR updates the ESP32-C3 BSP linker script to make IRAM/FLASH placement globs work on Windows builds where GNU ld reports object paths with backslashes.
本 PR 修改 ESP32-C3 BSP 的链接脚本,使其在 Windows 下(GNU ld 使用反斜杠路径)也能正确匹配 IRAM/FLASH 放置规则。

Changes:

  • Replace slash-only file globs with ? wildcards so patterns match both / and \ in object paths.
    将仅包含 / 的文件通配模式替换为 ?,以同时匹配 /\ 路径分隔符。
  • Apply the same separator-tolerant matching to multiple EXCLUDE_FILE(...) and section placement rules.
    对多个 EXCLUDE_FILE(...) 与 section 放置规则同步做分隔符兼容。

Review notes / 审查备注:

  • The new *bt?* patterns are overly broad (they can match libbtdm_app.a etc.), which can break the intended _bt_* vs _btdm_* BSS region partitioning.
    新增的 *bt?* 过于宽泛(可能匹配到 libbtdm_app.a 等),会破坏 _bt_*_btdm_* 的 BSS 分区边界。
  • 🟡 PR Title/PR 标题:[bsp][ESP32_C3] ... prefix is not fully lowercase; repository checklist requests lowercase prefixes.
    🟡 PR 标题前缀未完全小写;仓库检查项要求前缀使用小写格式。
File Description
bsp/​ESP/​ESP32_C3/​idf_port/​ld/​sections.ld Makes linker script file globs separator-agnostic for Windows builds to restore correct IRAM/FLASH placement.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@github-actions

Copy link
Copy Markdown

MemBrowse Memory Report

No memory changes detected for:

A '?' in *bt?* matches any character, so libbtdm_app.a was included
in the bt data and bss regions. Match only a slash or backslash.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

BSP: ESP32 BSP related with ESP BSP

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants