我有问题,
ARM GNU GCC 正在尝试将 .bss 部分“归零”,我不希望它这样做,因为我的启动代码已经在这样做了。由于这个原因,最终的图像大小增加了用零填充的 bss 大小。
我已经NOLOAD
在 bss 部分的链接器脚本中使用,并-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