什么是* fill *部分显示在链接映射文件中?

时间:2014-10-24 16:30:45

标签: gcc arm ld u-boot cortex-a8

昨天我创建了自己的u-boot模块,并希望将文本基地址设置为0xd0020010。 但是在编译之后,链接器生成的.map文件就像这样显示了

inker script and memory map

                0x00000000                . = 0x0
                0x00000000                . = ALIGN (0x4)

.text           0xd0020010      0x1f0
                0xd0020010                __image_copy_start = .
 *(.vectors)
 *fill*         0xd0020010       0x10 00
 .vectors       0xd0020020       0x60 arch/arm/lib/built-in.o
                0xd0020020                _start
                0xd0020044                _undefined_instruction
                0xd0020048                _software_interrupt
                0xd002004c                _prefetch_abort
                0xd0020050                _data_abort
                0xd0020054                _not_used
                0xd0020058                _irq
                0xd002005c                _fiq

你可以看到上面的.vectors部分,有16个字节的0x00,其名称是“* fill *”。

我的链接脚本就像这样

    SECTIONS
    {
        . = 0x00000000;

        . = ALIGN(4);
        .text :
        {
            __image_copy_start = .;
            *(.vectors)
            CPUDIR/start.o (.text*)
            *(.text*)
        }
      .........

我试图移除ALIGH(4),但它仍然停滞不前。 0xd0020010是一个对齐的地址吗?所以它应该与“ALIGH”无关

尽管16字节的内存由0x00填充,这些是 nop 指令,但我仍然想知道为什么会有“* fill *”部分。

0 个答案:

没有答案