内部シンボルのアドレスを.gotに書き込む必要があるのはなぜですか?

内部シンボルのアドレスを.gotに書き込む必要があるのはなぜですか?

私はブログを読んでいます。https://eli.thegreenplace.net/2011/11/11/position-independent-code-pic-in-shared-libraries-on-x64

「データ参照を含むx64 PIC - 例」セクションでは、モジュールは動的リンカーに絶対アドレスを入力するように指示し、コードがそのアドレスを取得し、そのアドレスmyglobから.gotデータを読み取るようです。

しかし、コンパイラがなぜこれを行う必要があるのか​​、これは独自のシンボルなので、このシンボルにアクセスするためにRIP相対アドレッシングを使用できないのはなぜですか?時々.data、モジュールは未知のオフセットにロードされる可能性があるためです.text(常にサイドにロードされるのではなく.text)。

私の言葉は、address_of(myglob)-address_of(instruction_that_access_myglob)それがどんな価値であれば、なぜ私たちは絶対住所を知るべきですかmyglob

ベストアンサー1

おすすめ記事