ARM GNU GCC 试图将 .BSS 部分归零



我遇到了问题,

ARM GNU GCC 正在尝试将 .bss 部分"归零",我不希望它这样做,因为我的启动代码已经在这样做了。因此,最终图像大小由填充为零的 bss 大小增加。

我已经在 bss 部分的链接器脚本中使用NOLOAD-fno-zero-initialized-in-bss作为 gcc 的 CFLAGS 的一部分。

我如何告诉 ARM GNU GCC 不要将那部分归零?我错过了什么吗?

以下是直接来自 ARM 的答案: 如何防止未初始化的数据初始化为零

通过将未初始化的数据放在其他部分中,可以防止该数据初始化为零。这可以使用 #pragma arm 部分或 GNU 编译器扩展属性((section("name")))来实现。

#pragma arm section zidata = “non_initialized”
int i, j; // uninitialized data in non_initialized section (without the pragma, would be in .bss section by default)
#pragma arm section zidata // back to default (.bss section)
int k = 0, l = 0; // zero-initialized data in .bss section

相关内容

  • 没有找到相关文章

最新更新