Skip to content

[bsp/qemu-vexpress-a9] support function names in backtraces - #11728

Merged
Rbb666 merged 1 commit into
RT-Thread:masterfrom
liulangrenaaa:20260821-bsp/qemu-vexpress-a9-backtrace-function-names
Aug 28, 2026
Merged

[bsp/qemu-vexpress-a9] support function names in backtraces#11728
Rbb666 merged 1 commit into
RT-Thread:masterfrom
liulangrenaaa:20260821-bsp/qemu-vexpress-a9-backtrace-function-names

Conversation

@liulangrenaaa

@liulangrenaaa liulangrenaaa commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Pass -mpoke-function-name to the compiler and assembler when RT_BACKTRACE_FUNCTION_NAME is enabled for the Cortex-A9 QEMU BSP. Keep the BSP configuration opt-in so users can enable symbolized backtraces through menuconfig without changing the default build.

Validation:

  • scons --pyconfig-silent
  • scons -C bsp/qemu-vexpress-a9 -j2
  • QEMU function-name backtrace verified with RT_BACKTRACE_FUNCTION_NAME enabled in a local configuration.

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

qemu-vexpress-a9 BSP 默认没有开启函数名符号支持,导致启用 RT_BACKTRACE_FUNCTION_NAME 后 backtrace 仍然只能打印地址,无法直接显示函数名,调试体验较差。

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

bsp/qemu-vexpress-a9/SConstruct 中检测 rtconfig.h 是否定义了 RT_BACKTRACE_FUNCTION_NAME,若已启用则向编译器和汇编器追加 -mpoke-function-name 选项。该选项由 GCC ARM 提供,会把函数名嵌入 text 段,使 Cortex-A 的 backtrace 能直接输出函数名。此配置保持 opt-in,不影响默认构建。

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

当前拉取/合并请求的状态 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自查

@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 分支 20260821-bsp/qemu-vexpress-a9-backtrace-function-names
    Enter PR branch 20260821-bsp/qemu-vexpress-a9-backtrace-function-names 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.

完成后,提交将自动更新至 20260821-bsp/qemu-vexpress-a9-backtrace-function-names 分支,关联的 Pull Request 也会同步更新。
Once completed, commits will be pushed to the 20260821-bsp/qemu-vexpress-a9-backtrace-function-names 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 the BSP label Aug 21, 2026
@Rbb666

Rbb666 commented Aug 26, 2026

Copy link
Copy Markdown
Member

作者可以把测试的日志截图发一下吗?触发backtrace指令后的截图样式

Comment thread bsp/qemu-vexpress-a9/SConstruct Outdated
@liulangrenaaa
liulangrenaaa force-pushed the 20260821-bsp/qemu-vexpress-a9-backtrace-function-names branch from 9250c7b to d1cddbe Compare August 28, 2026 03:16
Pass -mpoke-function-name to the compiler and assembler when
RT_BACKTRACE_FUNCTION_NAME is enabled for the Cortex-A9 QEMU BSP.
Keep the BSP configuration opt-in so users can enable symbolized
backtraces through menuconfig without changing the default build.

The flag is appended through CCFLAGS and ASPPCOM after the build
environment is created instead of concatenating it into
CFLAGS/CXXFLAGS/ASFLAGS: when the toolchain is selected with
--exec-path, PrepareBuilding() reloads rtconfig and
_apply_exec_path_override() overwrites those variables, which would
silently drop the option. The build still succeeds but function names
are missing from the text section, leaving backtraces without usable
frames.

Example backtrace in QEMU (vexpress-a9, RT_BACKTRACE_FUNCTION_NAME=y,
fault triggered from msh through cmd_fault -> fault_level1 ->
fault_level2 -> fault_level3):

    backtrace:
    0x600475a8 @ fault_level3
    0x600475dc @ fault_level2
    0x60047608 @ fault_level1
    0x60047630 @ cmd_fault
    0x6006ca80 @ _msh_exec_cmd
    0x6006cb3c @ msh_exec
    0x600717b4 @ finsh_thread_entry

Signed-off-by: Hui Su <3164683437@qq.com>
@liulangrenaaa
liulangrenaaa force-pushed the 20260821-bsp/qemu-vexpress-a9-backtrace-function-names branch from d1cddbe to cb2b39b Compare August 28, 2026 03:18
@Rbb666 Rbb666 added the 5.3.0 label Aug 28, 2026
@Rbb666
Rbb666 merged commit 0ae80cc into RT-Thread:master Aug 28, 2026
58 checks passed
@liulangrenaaa
liulangrenaaa deleted the 20260821-bsp/qemu-vexpress-a9-backtrace-function-names branch August 28, 2026 05:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants