Skip to content

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

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

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
Contributor

拉取/合并请求描述:(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.
@cms19859230182-lang

Copy link
Copy Markdown
Contributor Author

111

@cms19859230182-lang

Copy link
Copy Markdown
Contributor Author

这份和 #11847 是同一处改动。11847 是按现在的 master 重做的,这份关掉。

板子是在这份上烧的,ESP32-C3 DevKitM-1,COM10 能进 msh。

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