6

readelf -l /bin/ls

  LOAD           0x000000 0x08048000 0x08048000 0x18ff8 0x18ff8 R E 0x1000
  LOAD           0x019eec 0x08061eec 0x08061eec 0x003f4 0x01014 RW  0x1000

那么这两个段之间的边界页既是只读的又是可读写的,这怎么可能呢?

4

1 回答 1

6

假设页面大小为 4096 (0x1000) 字节并将地址舍入为页面粒度:

  • 第一个可加载段将使用地址范围 [0x8048000--0x8060FFF],包括两端。
  • 第二个可加载段将使用地址范围 [0x8061000--0x8062FFF],其中从地址 0x8061EEC 开始的 0x3F4 字节将来自可执行文件,其余的在加载时填充为零。

没有重叠。

于 2012-11-21T17:42:33.217 回答