6

readelf -l /bin/ls:

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

では、2 つのセグメント間の境界ページは読み取り専用で読み書き可能ですが、これはどのように可能でしょうか?

4

1 に答える 1

6

ページ サイズを 4096 (0x1000) バイトと仮定し、アドレスをページの粒度に丸めます。

  • 最初のロード可能なセグメントは、両端を含むアドレス範囲 [0x8048000--0x8060FFF] を使用します。
  • 2 番目のロード可能なセグメントはアドレス範囲 [0x8061000--0x8062FFF] を使用し、アドレス 0x8061EEC で始まる 0x3F4 バイトは実行可能ファイルから取得され、残りはロード時にゼロで埋められます。

重複はありません。

于 2012-11-21T17:42:33.217 に答える