为什么elf文件中的段可以重叠

问题描述 投票:3回答:2

简单的C文件:

#include <stdio.h>
int main(){
    printf("Hello World");
    return 0;
}

在编译代码后,使用readelf -a a.out,其后是elf信息:

“

问题:

  1. 几个部分出现在不同的段中,例如第二和第三段中的插入段。一节如何显示在多个分段中?
  2. 第二段的地址从0x8048134开始,但第三段LOAD的段从0x8048000开始,内存大小为0x004d0。那么两个部分重叠吗?两个段如何在内存中重叠?
  3. 为什么程序标头的偏移量和viraddr必须与页面大小成模数?
assembly elf segment
2个回答
4
投票

您可能在节表中有垃圾,或者可能完全丢失了垃圾。对于动态加载程序而言,最重要的是段表(程序头),即使这样,也只有PT_LOAD段不应


0
投票
  1. 几个部分出现在不同的段中,例如第二和第三段中的插入段。
© www.soinside.com 2019 - 2024. All rights reserved.