在 gcc
链接器文件中,如何将存档中所有 .obj
的所有函数映射到特定部分?
我知道如何在源文件中逐个函数地执行它,但我想在链接器文件中通过 .obj
名称来执行它。
我找到了 this post in the gcc mailing lists但对我来说它不起作用。
我通过复制海报所做的修改了我的 .ld
...
.dflash_code :
{
*archive.dlb: // this is my archive file
} >dflash
...但是没有用。
当我将 __attribute__((section(".dflash_code")))
添加到一个函数时,链接器报告的溢出量减少,所以我知道链接器正在支付注意 __attribute__
。
但是,我真的很想对整个存档(即 .dlb
)执行此操作。
我试图只基于一个 .obj
文件来做这件事,但即使那样也行不通
.dflash_code :
{
*compile.doj //my object file
} >dflash
更新
实际上,看起来它在工作(有点):它正在将 ATI_micropython.dlb
的内容输出到 .dflash_code
除了 .text 部分。
最佳答案
我试过的语法是正确的。
问题是在我的链接器文件中,我有一个 SECTION 声明 above 以下 SECTION 声明
.dflash_code :
{
*archive.dlb: // this is my archive file
} >dflash
把所有*.text
部分中的部分变得过满。
即使在这种错误情况下,链接器也会生成 .map
并检查这个 .map
显示archive.dlb
中对象的所有部分.text 除外 被放置在预期的 .dflash_code
中.
我移动了 .dflash_code
引用 *.text
的部分上方的部分现在可以使用了。
关于c++ - gcc 链接器 - 将存档中的所有目标文件映射到特定部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47399852/