【发布时间】:2016-04-17 10:06:16
【问题描述】:
例如在 ELF 核心转储中,我们有如下内容:
Start End Page Offset
0x08048000 0x08049000 0x00000000
/hshare/prog
0x08049000 0x0804a000 0x00000000
/hshare/prog
什么映射到什么?
【问题讨论】:
例如在 ELF 核心转储中,我们有如下内容:
Start End Page Offset
0x08048000 0x08049000 0x00000000
/hshare/prog
0x08049000 0x0804a000 0x00000000
/hshare/prog
什么映射到什么?
【问题讨论】:
什么映射到什么
您实际上是在查看崩溃时二进制文件的 /proc/self/maps 的内容。
在您的情况下,prog 非常小,以至于它的 .text 和 .data 可以放在一个页面上。因此prog 是mmaped 两次:一次对.text 具有r-x 权限(实际上它是第一个PT_LOAD 段,因为.text 在链接后没有任何意义),一次用于.data 和@ 987654332@(第二个PR_LOAD 段)具有rw- 权限。
查看readelf -Wl prog 的输出可能会更清楚。
如果您使prog 更大(例如,通过使用带有-static 的完全静态链接)并使其成为核心转储,您将看到两个映射现在将具有不同的Page Offset。
【讨论】: