ARM GNU GCC试图将.bss部分清零

时间:2013-10-21 18:56:03

标签: gcc linker arm elf segments

我遇到了问题,

ARM GNU GCC试图将.bss部分“归零”,我不希望它这样做,因为我的启动代码已经这样做了。由于这个原因,最终的图像尺寸增加了填充零的bss大小。

我已经在bss部分的链接描述文件中使用了NOLOAD,而作为gcc的CFLAGS的一部分使用了-fno-zero-initialized-in-bss

如何告诉ARM GNU GCC不要将该部分归零?我错过了哪些内容?

1 个答案:

答案 0 :(得分:0)

这是直接来自ARM的答案:How to prevent uninitialized data from being initialized to zero

  

通过将数据放在不同的部分,可以防止未初始化的数据初始化为零。这可以使用#pragma arm部分,或使用GNU编译器扩展属性((部分(" 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