Go to main content
Oracle® Solaris 11.3 リンカーとライブラリガイド

印刷ビューの終了

更新: 2015 年 10 月
 
 

実行時リンカー

リンカーは、動的リンクを開始する動的オブジェクトを作成する際、PT_INTERP 型のプログラムヘッダー要素を実行可能ファイルに付加します。この要素は、実行時リンカーをプログラムインタプリタとして呼び出すようにシステムに指示します。exec(2) と実行時リンカーは、協調してプログラムのプロセスイメージを作成します。

リンカーはまた、実行時リンカーを支援する、実行可能ファイルと共有オブジェクトファイル用のさまざまなデータを作成します。これらのデータは読み込み可能セグメントに存在するため、データを実行時に使用できます。これらのセグメントには、次のものが含まれます。

  • タイプ SHT_DYNAMIC.dynamic セクション。このセクションにはさまざまなデータが格納されます。このセクションの始まりに存在する構造体には、ほかの動的リンク情報のアドレスが存在します。

  • タイプ SHT_PROGBITS.got セクションと .plt セクション。これらのセクションには、2 つの独立したテーブル (グローバルオフセットテーブルとプロシージャーリンクテーブル) が格納されます。これ以降のセクションでは、オブジェクトファイルのメモリーイメージを作成するために実行時リンカーがテーブルをどのように使用および変更するかを説明します。

  • タイプ SHT_HASH.hash セクション。このセクションにはシンボルハッシュテーブルが格納されます。

共有オブジェクトは、ファイルのプログラムヘッダーテーブルに記録されているアドレスとは異なる仮想メモリーアドレスを占有することが可能です。実行時リンカーは、アプリケーションが制御を取得する前に、メモリーイメージを再配置して絶対アドレスを更新します。