使用链接描述文件

时间:2016-05-19 09:52:58

标签: gcc linker loader linker-scripts

任何人都可以请指出对齐值的限制是什么,这会为一个部分创建多个细分。

使用下面提到的测试用例:

#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&lt;&lt; 11) to #define SIZE(1&lt;&lt;&lt; 12)

如果没有上述更改,我们只看到两个可加载段,而在进行上述更改时,我们观察到三个可加载段。对于GCC 4.8.1,BSS的对齐从8K变为16K,这会产生三个可加载的段。

所以有人可以告诉我在链接器脚本中需要做些什么更改才能为数据创建一个可加载的段。

2 个答案:

答案 0 :(得分:0)

有两种方法可以创建链接描述文件: 1.在ld / emulparam目录下有shell脚本,它创建链接描述文件。 2.链接器脚本的其他部分来自实际源。

现在在源部分,依赖于您正在使用的链接器,即。 GNU链接器或金链接器。

答案 1 :(得分:0)

GNU链接器脚本基于

构建
  1. 在目录〜/ binutils-2013.11 / ld / emulparams /下,有不同的架构细节shell脚本,基于不同的ELF类型和平台,如i386 / Vxworks
  2.   

    elf_i386_vxworks.sh

    1. 虽然剧本中包含的其他通用内容来自ld / elf来源。
    2. 关于细分创建,请查看来源&#34; bfd / elf.c &#34;

      下的程序**bfd_boolean _bfd_elf_map_sections_to_segments (bfd *abfd, struct bfd_link_info *info)**