小编Dre*_*ter的帖子

为 ARM M4 编译和链接位置无关代码 (PIC)

我正在制作一个引导加载程序并赋予它自我更新的能力。此过程包括将二进制文件复制到新位置,跳转到该位置,然后使用它在原始位置刷新新的引导加载程序。这一切都是使用 ARM GCC 工具链在 Eclipse 中为 M4 处理器开发的。

为此,我认为需要将其编译为位置无关代码(PIC)。

我四处搜索并发现这篇优秀的文章,因此当我将“-fPIC”添加到 ARM GCC 编译器调用时,我预计会看到有关 GOT 和 PLT 丢失的链接器错误 https://eli.thegreenplace.net/2011/11 /03/共享库中的位置无关代码图片/

在我的链接器脚本中,我将这些位置添加到 .data 部分,如下所示:

.data : AT(__DATA_ROM)
{
. = ALIGN(4);
__DATA_RAM = .;
__data_start__ = .; /* Create a global symbol at data start. */
*(.got*) /* .got and .plt for position independent code */
*(.data) /* .data sections */
*(.data*) /* .data* sections */
KEEP(*(.jcr*))
. = ALIGN(4);
__data_end__ = .; /* Define a global symbol at data end. */ …
Run Code Online (Sandbox Code Playgroud)

c arm position pic bootloader

2
推荐指数
1
解决办法
5740
查看次数

标签 统计

arm ×1

bootloader ×1

c ×1

pic ×1

position ×1