首页 > 解决方案 > NOLOAD 输出部分如何映射到段中?

问题描述

我有一个链接器脚本片段:</p>

... 

SECTIONS
{
    . = 0x00000000;
    ...

    .dma (NOLOAD) : { *(.dma)}
    . = 0x39B10000;
    .phy_load (NOLOAD) : { *(.phy_load) }
    
    ...
}

readelf -l 输出中,.dma.phy_load部分被放入同一个LOAD段中。这里有两个问题:

  1. NOLOAD部分进入LOAD段。这是正确的行为吗?这篇文章问了同样的问题,但没有得到最终答案。
  2. FileSiz为 0 并且MemSiz是结果中此段的一个大数 (0x39ad74b0) readelf -lNOLOAD部分被FileSiz(ELF 文件)排除,但被MemSiz(内存映像)包含。那么 ELF 加载器将如何处理这种段,尤其是段之间的孔(这里是 和 之间的孔.dma.phy_load?我的测试结果显示,加载 ELF 时,孔被零初始化。如果我不想这样,我该怎么办?

标签: elflinker-scriptsreadelf

解决方案


推荐阅读