gpt4 book ai didi

c - 如何强制IAR链接器保留未使用的功能?

转载 作者:行者123 更新时间:2023-11-30 15:10:12 24 4
gpt4 key购买 nike

我正在测试为瑞萨 RL78 微 Controller 编写的 C 软件。该软件仍在开发中,因此有些功能已实现但尚未调用。因此,链接器消除了此类函数,链接器在列表中输出以下条目:

CODE
Segment part 42. NOT NEEDED.
LOCAL ADDRESS
===== =======
function_name

我的目标是在目标系统上执行这些函数的单元测试,因此我需要代码出现在输出 ELF 文件中。如何告诉链接器保留未使用的函数?我已经尝试将优化级别设置为“无”,并将模块类型设置为“程序”或“库”。我还定义了一个名为 CODE 的代码段。所有这些操作都没有对链接器输出产生预期的影响。

我无法修改源代码(从技术上讲,我可以修改我想要的所有内容,但我无法提交任何内容),因此从 main() 调用我需要的所有函数是不可行的一个选项。

最佳答案

我找到了相关的tech note这表明:

  • IAR XLINK Linker -g option
  • IAR ILINK Linker --keep option
  • use the REQUIRE keyword in assembler
  • use the __root extension keyword

由于我使用了xlink,所以我尝试了第一个选项并且它有效。以下是该选项的快速引用:

-gsymbol1[,symbol2,symbol3,…] Requires global entries

以下是在 IDE 中设置该选项的方式: enter image description here

由于 M.M 问我如何对其余代码未调用的函数进行单元测试,这是我的调试器的屏幕截图。基本上,一旦到达主循环,它就会停止目标,为函数创建一个人工堆栈帧并调用它。 enter image description here

关于c - 如何强制IAR链接器保留未使用的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36313006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com