obj-copy忽略了一些填充

时间:2018-09-13 12:00:56

标签: gcc arm ld linker-scripts objcopy

我在手臂obj-copy中遇到了一个奇怪的问题。我是在做错事还是遇到错误?

我想用0到0x1000(4096)对齐的零填充我的图像,我通过下面的链接脚本进行填充。问题在于obj-copy不会复制整个填充,由于某种原因,它会在0x400处停止。

我已经使用objdump来评估我的部分,它似乎大小正确,可以填充到0x1000。

在使用0x1000填充的情况下,为什么二进制文件的hexdump无法正确填充?我通过以下方式使用objcopy来创建我的二进制文件:

 /usr/local/armhf/r27/bin/arm-axis-eabi-objcopy -I elf32-little -O binary myobj.o myobj.bin

对象转储:

.fill         0000080c  009117f4  009117f4  000117f4  2**0
              CONTENTS, ALLOC, LOAD, DATA

009117f4 l    d  .fill  00000000 .fill
00912000 g       .fill  00000000 __Eloadimg

链接脚本:

__Edata = .;

.fill :
{
  FILL(0x00000000);
  BYTE(0x00);
  . = ALIGN(0x1000);
}

__Eloadimg = .;

1 个答案:

答案 0 :(得分:0)

我发现了错误,这是我的。在评估了链接脚本中的所有计算后,我发现MEM_START是0x905c00,在0x1000对齐的情况下,二进制二进制文件的十六进制转储看起来是未对齐的。