1

我在 arm obj-copy 中遇到了一个奇怪的问题。我做错了什么还是遇到了错误?

我想用零填充我的图像,直到 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 = .;
4

1 回答 1

0

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

于 2018-09-19T08:05:47.290 回答