この付録では、Oracle Solaris OS のリリースに追加された更新内容と新機能の概要について説明します。
リンカーで、デバッグセクションを解凍および圧縮できるようになりました。圧縮デバッグセクションおよび セクションの圧縮を参照してください。
la_callinit() 関数と la_callentry() 関数により、実行時監査プログラムとプロセス初期設定の同期が改善されました。監査インタフェースの関数および 監査インタフェース制御フローを参照してください。
–z relax オプションを使用して、リンカーのデフォルトの妥当性チェックの項目を緩和できるようになりました。このオプションにより、これ以外では拒否される出力オブジェクトの作成を可能になりました。–z relax オプションは、–t オプションおよび –z relaxreloc オプションの代替となるものです。ld(1)を参照してください。
リンカーの –z type オプションと、追加の LD_UNSET、LD_{object-type}_OPTIONS、および LD_{object-type}_UNSET 環境変数により、オプション処理がさらに柔軟になりました。リンカーオプションの指定を参照してください。
elfdump(1)に対する新しい –F オプションにより、出力形式オプションがもたらされました。
関連する実オブジェクトで見られるシンボルを、スタブオブジェクトでは省略できるようになりました。この手法により、下位互換性のために実オブジェクトでシンボルを保持しながら、スタブオブジェクトに対してリンクするこれらのシンボルが新しいコード開発で使用されないようにすることができます。スタブオブジェクトを使用した、廃止インタフェースの非表示を参照してください。
補助オブジェクトを使用すると、実行時に必要でないデバッグセクションを別のオブジェクトファイルに書き込むことができます。補助オブジェクトを参照してください。
親オブジェクトを使用すると、plugin がその親に対して直接リンクできるようになり、plugin オブジェクトを簡単に構築できます。親オブジェクトを参照してください。
ld(1) には、アドレス空間配置およびランダム化のオブジェクト単位を制御する –z aslr オプションが用意されています。elfedit(1)は、関連する DT_SUNW_ASLR 動的セクションエントリの簡易編集ができるように変更されました。Table 13–12 を参照してください。
新しいユーティリティー elffile(1)を使用して、アーカイブライブラリとそのメンバーをさらに完全に検査できます。
ソフトウェア機能属性をエンコードすることによって、64 ビットプロセスを下位 32 ビットアドレス空間に制限できます。ソフトウェア機能アドレス空間制限処理を参照してください。
リンカーの –z discard-unused オプションにより、使用されない対象物をリンク編集からより柔軟に破棄できるようになりました。使用されない対象物の削除を参照してください。
リンカーの –z strip-class オプションにより、重要でないセクションをオブジェクトから柔軟に取り除くことができるようになりました。–z strip-class オプションは古い –s オプションに優先し、取り除くセクションをさらにきめ細かく制御します。
リンカーはスタブオブジェクトを作成できます。スタブオブジェクトとは、完全に mapfile から作成される、コードとデータを含まずに実際のオブジェクトと同じリンクインタフェースを提供する共有オブジェクトです。スタブオブジェクトは、非常に簡単にリンカーで作成できます。また、構築の並列処理を増やしたり、構築の複雑さを軽減したりできます。スタブオブジェクトを参照してください。
リンカーは、–z guidance オプションを使用して高品質のオブジェクトを作成するためのガイドを提供できます。ld(1)を参照してください。
アーカイブ処理では、サイズが 4G バイトより大きいアーカイブを作成できるようになりました。
ローカルの監査者が la_preinit() と la_activity() のイベントを受け取ることができるようになりました。実行時リンカーの監査インタフェースを参照してください。
遅延依存関係により、機能が存在するかどうかを検査するモデルがより堅牢になりました。機能のテストおよび dlopen() の代替手段の提供を参照してください。
新しい mapfile 構文が利用できるようになりました。Chapter 8, mapfileを参照してください。この構文は、元の System V Release 4 の言語の構文に比べて、可読性と拡張性が向上しています。元の mapfile を処理するためのサポート機能はリンカー内に完全に保持されています。元の Appendix B, System V Release 4 (バージョン 1) Mapfile 構文と使用方法については、Appendix B, System V Release 4 (Version 1) Mapfilesを参照してください。
個々のシンボルは機能要件と関連付けることができます。機能要件の特定を参照してください。この機能は、動的オブジェクト内の最適化された機能ファミリの作成に対応しています。シンボル機能関数ファミリの作成および 機能セクションを参照してください。
リンカーで作成され、Oracle Solaris 固有の ELF データを含むオブジェクトは、e_ident[EI_OSABI] ELF ヘッダー内で ELFOSABI_SOLARIS のタグが付けられます。これまで、ELFOSABI_NONE がすべてのオブジェクトに使用されてきました。この変更は主に情報を充実させるためであり、実行時リンカーは引き続き ELFOSABI_NONE と ELFOSABI_SOLARIS は同じであると見なします。しかし、elfdump(1)および類似の診断ツールは、この ABI 情報を使用して、特定のオブジェクトに関するより正確な情報を作成できます。
elfdump(1)は拡張され、e_ident[EI_OSABI] ELF ヘッダーの値、または新しい –O オプションを使用して、特定の ABI に固有の ELF データの型と値を特定したり、この情報を使用してオブジェクトの内容をより正確に表示したりできるようになりました。Linux オペレーティングシステムからのオブジェクト内の ABI 固有情報を表示する機能が大幅に拡張されました。
プロセスでロードされたオブジェクトのセグメント対応付け情報は、dlinfo(3C)のフラグ RTLD_DI_MMAPCNT および RTLD_DI_MMAPS を使用すると取得できます。
リンカーは多くの GNU リンカーオプションを認識します。ld(1)を参照してください。
リンカーに SPARC および x86 ターゲットのためのクロスリンクが提供されます。クロスリンク編集を参照してください。
リンカーに SHF_MERGE | SHF_STRING 文字列セクションをマージする機能が提供されます。セクションのマージを参照してください。
実行可能プログラムと共有オブジェクトの作成時に、デフォルトで再配置セクションがマージされるようになりました。再配置セクションの結合を参照してください。この動作を使用するには、リンカーの –z combreloc オプションが必要でした。このデフォルトの動作を無効にして、再配置を適用する必要のあるセクションで 1 対 1 関係を保持するために、–z nocombreloc が用意されています。
新しいユーティリティー elfedit(1)を使って ELF オブジェクトを編集できます。
新しいユーティリティー elfwrap(1)を使用すると、任意のデータファイルを ELF 再配置可能オブジェクト内にカプセル化できます。
追加のシンボル可視性属性が提供されています。SYMBOL_SCOPE/SYMBOL_VERSION 指令およびTable 12–23 にある、エクスポート済み、シングルトン、および削除属性の記述を参照してください。
リンカーとその関連 ELF ユーティリティーが、/usr/ccs/bin から /usr/bin に移動されました。リンカーの起動を参照してください。
シンボルソートセクションが追加され、メモリーアドレスとシンボリック名の関連付けを簡単にできるようになりました。シンボルソートセクションを参照してください。
動的オブジェクトで使用できるシンボルテーブル情報が、新しい .SUNW_ldynsym セクションの追加によって拡張されています。シンボルテーブルセクションおよびTable 12–5 を参照してください。
crle(1)によって管理される構成ファイルの形式が拡張され、ファイルの識別機能が向上しています。改善された形式により、実行時リンカーが互換性のないプラットフォームで生成された構成ファイルを使用しないようになります。
関連付けたシンボルのサイズを再配置の計算で使用するために、新しい再配置タイプが追加されました。再配置を参照してください。
–z rescan-now、–z recan-start、および –z rescan-end のオプションでは、アーカイブライブラリをリンク編集に容易に指定できるようになりました。コマンド行上のアーカイブの位置を参照してください。
次の機能が廃止されました。これらの機能は内部機能、またはほとんど使用されない機能です。既存の関連する ELF 定義はすべて無視されますが、elfdump(1)などのツールによって、定義を引き続き表示できます。
この動的セクションタグは実行時の機能要件を特定しました。動的セクションを参照してください。このタグは機能フラグ DTF_1_PARINIT および DTF_1_CONVEXP を提供しました。DT_FEATURE_1 タグおよび関連フラグは、今後、リンカーによって作成されたり、実行時リンカーによって処理されたりしません。
リンカーの –z globalaudit オプションを指定することで、アプリケーション内の監査を記録することによる大域監査を有効化できるようになりました。大域監査の記録を参照してください。
リンカーの新しいサポートインタフェース ld_open() と ld_open64() が追加されました。サポートインタフェース関数を参照してください。
リンカーの –z altexec64 オプションおよび LD_ALTEXEC 環境変数を使用して代替リンカーを実行する際の柔軟性が向上しました。
mapfiles を使用して生成されるシンボル定義を、ELF セクションに関連付けることができるようになりました。SYMBOL_SCOPE/SYMBOL_VERSION 指令を参照してください。
リンカーおよび実行時リンカーは、共有オブジェクト内の静的な TLS の作成に対応しています。また、起動後の共有オブジェクト内部で静的な TLS の限定的な使用を可能にするバックアップ TLS 予約が規定されました。プログラムの起動を参照してください。
x64 中規模コードモデルのサポートが提供されました。Table 12–4、Table 12–8、およびTable 12–12 を参照してください。
コマンド行引数、環境変数、およびプロセスの補助ベクトル配列は、dlinfo(3C)のフラグ RTLD_DI_ARGSINFO を使用して取得できます。
リンカーの –B nodirect オプションにより、外部参照からの直接結合をより柔軟に禁止できるようになりました。Chapter 6, 直接結合を参照してください。
x64 がサポートされるようになりました。Table 12–5、特殊セクション、再配置型、スレッド固有変数へのアクセス、およびスレッド固有ストレージの再配置のタイプを参照してください。
ファイルシステムの再構成により、多数のコンポーネントが /usr/lib から /lib に移動されました。これにより、リンカーと実行時リンカー両方のデフォルト検索パスが変更されました。リンカーが検索するディレクトリ、実行時リンカーが検索するディレクトリ、および セキュリティーを参照してください。
システムアーカイブライブラリが提供されなくなりました。したがって、静的にリンクされた実行可能ファイルは作成できなくなりました。静的実行可能ファイルを参照してください。
crle(1)の –A オプションにより、代替依存関係をより柔軟に定義できるようになりました。
リンカーおよび実行時リンカーは、値が指定されていない環境変数を処理します。環境変数を参照してください。
dlopen(3C)とともに、明示的な依存関係の定義として使用されるパス名は、すべての予約トークンを使用できるようになりました。Chapter 10, 動的ストリングトークンによる依存関係の確立を参照してください。予約トークンを使用するパス名は、新ユーティリティー moe(1)で評価されます。
dlsym(3C)と新しいハンドル RTLD_PROBE によって、インタフェースが存在するかどうかを確認する最適な方法が提供されました。dlopen() の代替手段の提供を参照してください。