在嵌入式环境中,我想传达有关特殊部分的信息 从构建过程到程序的内存(起始地址和长度) 装载机。我的想法是让链接器创建类似于.bss的输出节, 即该部分不应占用elf文件中的空间,而应具有标志 就像.bss部分一样。我想到这个主意是因为我已经在使用自定义 链接描述文件。
在处理elf文件时,我的统一加载程序可以识别此部分 并以魔术名称命名,并使用大小和VMA部分作为 记忆的特殊部分。
当我说它应该类似于.bss时,是指objdump -h
的输出
应该与此类似:
Sections:
Idx Name Size VMA LMA File off Algn
...
7 .bss 00000204 10204c9c 10204c9c 00005c40 2**2
ALLOC
...
我想重要的是,这里仅存在标志ALLOC,而没有LOAD 或内容。
是否可以通过链接描述文件中的某些说明来实现? 如果是的话,这些指示是什么?
答案 0 :(得分:0)
在stackoverflow上浏览类似的问题,ld文档显示解决方案非常简单:
.special_start = 0x20000000;
.special_size = 0x10000000;
.special .special_start (NOLOAD) :
{
. = . + .special_size;
}
从objdump -h
获得此输出:
Sections:
Idx Name Size VMA LMA File off Algn
...
6 .sbss 0000005c 10204c40 10204c40 00005c40 2**2
ALLOC, SMALL_DATA
7 .bss 00000204 10204c9c 10204c9c 00005c40 2**2
ALLOC
8 .special 10000000 20000000 20000000 00006000 2**0
ALLOC
...