gpt4 book ai didi

position - 尝试在 cortex-m3 上加载与位置无关的代码

转载 作者:行者123 更新时间:2023-12-02 10:10:55 26 4
gpt4 key购买 nike

我有一个嵌入式应用程序,它将有一个引导加载程序,它将决定直接从内部闪存运行两个应用程序之一。我试图使这些应用程序位置独立,以便它们都可以针对相同的基地址进行编译。没有操作系统,因此没有可用的动态链接器。到目前为止,我已经尝试使用 -fpie 选项(使用 gcc)进行构建,但没有取得太大成功。函数调用似乎是正确的,但全局数据没有正确的地址。本地定义的全局数据的地址偏移量似乎是应用程序与其原始基地址的偏移量。在其他文件中声明的全局数据的地址完全错误(如果我使用 -fpic 构建,则本地声明的全局数据和其他文件中的全局数据都完全错误)。我怀疑当我的应用程序启动时我需要对 GOT 部分进行一些操作,但我不确定。

最佳答案

我终于成功了。看来我需要执行以下操作:所有代码都需要遵守-fpic(之前我尝试过-fpie)

我的链接器脚本也需要修改。我强制 GOT 进入 sram 部分,它位于闪存中的动态部分之后。如果 GOT 部分位于闪存中的动态部分之前,看起来一切都会正常工作。不知道为什么这很重要,但它似乎解决了所有问题 - 在此之前,就好像代码没有正确定位 GOT,因为 GOT 存储了正确的值,但我所有变量的地址都不正确。

关于position - 尝试在 cortex-m3 上加载与位置无关的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5024387/

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