代码之家  ›  专栏  ›  技术社区  ›  ria

obj copy忽略一些填充

  •  1
  • ria  · 技术社区  · 6 年前

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

    我想用0填充我的图像直到0x1000(4096)对齐,我通过下面的链接脚本来填充。问题是obj copy不会复制整个填充,因为某些原因它会在0x400处停止。

    我已经使用objdump来评估我的分区,它的大小似乎适合填充0x1000。

    为什么在使用0x1000填充的情况下,二进制文件的hextump没有正确填充?我使用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 回复  |  直到 6 年前
        1
  •  0
  •   ria    6 年前

    我发现了错误,那是我的。在评估了链接器脚本中的所有计算之后,我发现MEM\u START是0x905c00,这使得二进制文件的hexdump在0x1000对齐的情况下看起来不对齐。