使用链接描述文件

时间:2016-09-29 16:49:06

标签: image linker arm elf linaro

我正在使用linaro工具链为ARM平台生成ELF文件。 该文件是一个应该运行裸机的可执行文件。

我使用链接描述文件来选择内存中各节的位置,因为我想将特定的节放在特定的位置。

问题在于,当我在内存中向前移动某个部分时,我发现虽然没有添加其他数据,但图像尺寸会增加。

当我运行readelf -a elf_file时,我发现虚拟地址(请参阅下面的Address字段)和图像中的偏移(请参阅下面的Offset字段)都会增加。

示例:

链接描述文件中的以下行

. = 0x2000000; .__translations_block_0 : { TM_TranslationTables.o(__translations_block_0) }

导致elf文件中的以下偏移量(来自readelf的输出)

[Nr] Name Type Address Offset Size EntSize Flags Link Info Align [10] .tdata PROGBITS 0000000000279000 00279080 000000000000000c 0000000000000000 WAT 0 0 16 [11] .tbss NOBITS 0000000000279080 0027908c 0000000000011bcc 0000000000000000 WAT 0 0 16 [12] .__translations_b PROGBITS 0000000002000000 02000080 0000000000000008 0000000000000000 WA 0 0 8 [13] .__translations_b PROGBITS 0000000002001000 02001080 0000000000000008 0000000000000000 WA 0 0 8

我的问题是:

有没有办法在不吹出图像尺寸的情况下增加某些部分的地址?我只想将该部分加载到内存地址0x2000000,我不希望图像大小为0x2000000。

任何帮助都将不胜感激。

0 个答案:

没有答案