在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 部分。
答案 0 :(得分:1)
我尝试的语法是正确的。
问题是在我的链接器文件中,我有一个 SECTION 语句以上以下 SECTION 语句
.dflash_code :
{
*archive.dlb: // this is my archive file
} >dflash
将所有*.text
部分放在一个过满的部分。
即使在这个错误的情况下,链接器也会生成.map
并检查此.map
,显示archive.dlb
中的所有对象除了.text 之外被放置在预期的.dflash_code
。
我将.dflash_code
部分移到引用*.text
的部分上方,现在可以正常工作。