linux - ELF NT_FILE 注释的含义

标签 linux elf

例如在 ELF 核心转储中,我们有这样的东西:

  Start         End Page Offset
0x08048000  0x08049000  0x00000000
    /hshare/prog
0x08049000  0x0804a000  0x00000000
    /hshare/prog

什么完全映射到什么?

最佳答案

What is mapped exactly to what

您正在有效地查看崩溃时二进制文件的 /proc/self/maps 的内容。

在您的情况下,prog 非常小,以至于它的 .text.data 可以放在一个页面上。因此 progmmap 编辑了两次:一次具有 .textr-x 权限(实际上它是第一个 PT_LOAD 段,因为 .text 链接后​​没有意义),一次用于 .data.bss (第二个 PR_LOAD 段)具有 rw- 权限。

查看 readelf -Wl prog 的输出可能会更清楚。

如果您使 prog 变大(例如,通过使用带有 -static 的完全静态链接)并使其成为核心转储,您将看到这两个映射将现在有不同的 Page Offset

关于linux - ELF NT_FILE 注释的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36669535/

相关文章:

C++ ELF 目标文件符号表有两次列出的函数

c++ - 了解ELF执行程序的SHT_NOTE节 “.note.ABI-tag”

linux - 哪个版本的 dcmtk 与 gcc 版本 4.8.2 兼容?

c++ - C++ Linux蓝牙sdp_connect仅以root特权成功

c++ - 如何查找并替换存储在 char 数组中的字符串?

c++ - 为所有 Linux 发行版编译 C++

operating-system - 我应该制作自己的操作系统内核 ELF 还是原始二进制文件?

c - 使用 memfd_create 和 fexecve 从内存运行 ELF

shared-libraries - ELF共享库

linux - jmeter 自动创建用户/密码帐户