位置独立コード(PIC)とは?
位置独立コードは、プログラムカウンタに対して相対的に、あるいは間接テーブルを介してアドレスを参照するため、メモリ上のどこに置かれても正しく実行される機械コードです。ロード位置が変わると壊れてしまうハードコードされた絶対アドレスを避けます。共有ライブラリは、任意のアドレスにマップできるよう通常この方法でコンパイルされます。
なぜ重要か
PICは、1つの共有ライブラリがプロセスごとに異なるアドレスにロードされることを可能にし、アドレス空間配置のランダム化を支えます。それがなければ、ライブラリをロード時に自由に再配置できません。
関連ガイド
What Is a Shared Object?A shared object is a library file loaded into memory at runtime and shared by multiple programs, rather than…
What Is a Relocation Table?A relocation table lists the places in an object file whose addresses must be patched once the final load add…
What Is the Global Offset Table?The global offset table is a per-module table of addresses that position-independent code reads to reach glob…