【发布时间】:2016-05-19 09:52:58
【问题描述】:
谁能指出对齐值的限制是什么,这使得为一个部分创建多个段。
用下面提到的测试用例:
#include <stdio.h>
#define SIZE (1 << 11)
int Buffer[SIZE] __attribute__ ((aligned (SIZE * sizeof(int)))) ;
int main (int argc, char * argv[])
{
printf("Test\n");
return 0;
}
如果我将宏更改为:
#define SIZE (1 到 #define SIZE (1
如果没有上述更改,我们只能看到两个可加载段,而通过上述更改,我们观察到三个可加载段。随着 GCC 4.8.1 的 BSS 对齐从 8K 变为 16K,这会创建三个可加载段。
谁能告诉我需要在链接描述文件中进行哪些更改才能只为数据创建一个可加载段。
【问题讨论】:
-
这是我在 i686 机器上观察到的。
标签: gcc linker loader linker-scripts