ARM:GNU GCC LInker bss部分对齐

时间:2013-10-29 18:20:32

标签: c gcc linker arm

我正在使用GNU链接器脚本,其中bss部分变量获得非4字节对齐的地址,这是一个大问题,因为变量地址正由硬件使用,需要字对齐的地址。

如果我有10个变量,或者我想让链接器为特定部分中的每个变量生成单词对齐的地址,而不是使用其中一个的align属性,我该怎么办呢?

我尝试使用ALIGN()但没效果。

这是一个例子:

 .bss.a 9cdf8        0x1

 .bss.b 9cdf9        0x1

.bss.b对于所有变量,我想获得0x9cdf8 + 4等。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

您可能最好在标记需要4字节对齐的变量时进行标记。例如,在gcc中:

char a __attribute__((aligned(4)));
char b __attribute__((aligned(4)));

请参阅http://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/Variable-Attributes.html