我正在尝试添加一个部分(除了预定义的部分)。我希望该部分是RWX。
目前我所知道的是:
SECTIONS
{
.dictionary :
{
*(.dictionary)
}
}
INSERT AFTER .text;
我使用-T
链接器选项。
我想在运行时将可执行代码放在其中。有点像一个可写的.text部分
我知道如何通过链接器-N
选项使.text部分可写,但我不喜欢采用这种方法,以避免意外写入。
我还了解如何通过链接器-zexecstack
选项将堆栈标记为可执行,目前正在使用它,但希望看看是否可以追加一个新的部分。
我很难理解通过列出--verbose链接器选项获得的默认链接器脚本。
当我使用上面的代码时,我可以很好地链接。我可以尝试将可执行代码放置在部分中,但可执行代码崩溃了。
基本要求是有一个新的部分,我可以在其中分配空间,将可执行代码放在其中,然后从其中执行。
1条答案
按热度按时间dz6r00yl1#
我可能偶然发现了答案。
-zexecstack
解决方案可以工作,但通过Cortex M0+处理器上的BL将数据放置在分支之外很远的地方。所以,我试着按照这里的注解:https://sourceware.org/binutils/docs/as/Section.html
而只是在my .s程序集文件中声明了一个节,如下所示:
这就像一个魅力,解决了我的问题。