我遇到了问题,
ARM GNU GCC试图将.bss部分“归零”,我不希望它这样做,因为我的启动代码已经这样做了。由于这个原因,最终的图像尺寸增加了填充零的bss大小。
我已经在bss部分的链接描述文件中使用了NOLOAD
,而作为gcc的CFLAGS的一部分使用了-fno-zero-initialized-in-bss
。
如何告诉ARM GNU GCC不要将该部分归零?我错过了哪些内容?
答案 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