この付録は、Solaris OS に追加されたアップデートと新機能の概要を提供します。
リンカーの -z globalaudit オプションを指定することで、アプリケーション内の監査を記録することによる大域監査を有効化できるようになりました。「大域監査の記録」を参照してください。
リンカーの新しいサポートインタフェース ld_open() と ld_open64() が追加されました。「サポートインタフェース関数」を参照してください。
リンカーの -z altexec64 オプションおよび LD_ALTEXEC 環境変数を使用して代替リンカーを実行する際の柔軟性が向上しました。「32 ビットリンカーと 64 ビットリンカー」を参照してください。
mapfiles を使用して生成されるシンボル定義を、ELF セクションに関連付けることができるようになりました。「mapfile を使用した追加シンボルの定義」を参照してください。
リンカーが、共有オブジェクト内で静的な TLS を作成できるようになりました。また、起動後の共有オブジェクト内部で静的な TLS の限定的な使用を可能にするバックアップ TLS 予約が規定されました。「プログラムの起動」を参照してください。
dlinfo(3C) のフラグ RTLD_DI_ARGSINFO を使用すれば、コマンド行引数、環境変数、およびプロセスの補助ベクトル配列を取得できます。
リンカーの -B nodirect オプションにより、外部参照からの直接結合をより柔軟に禁止できるようになりました。「直接結合」を参照してください。
x64 がサポートされるようになりました。表 7–5、「特殊セクション」、「x64: 再配置型」、「x64: スレッド固有変数へのアクセス」、および 「x64: スレッド固有領域の再配置のタイプ」を参照してください。
ファイルシステムの再構成により、多数のコンポーネントが /usr/lib から /lib に移動されました。これにより、リンカーと実行時リンカー両方のデフォルト検索パスが変更されました。「リンカーが検索するディレクトリ」、「実行時リンカーが検索するディレクトリ」、および 「セキュリティー」を参照してください。
システムアーカイブライブラリが提供されなくなりました。したがって、静的にリンクされた実行可能ファイルは作成できなくなりました。「静的実行可能ファイル」を参照してください。
crle(1) の -A オプションにより、代替依存関係をより柔軟に定義できるようになりました。
リンカーは、値なしで指定された環境変数を処理できるようになりました。「環境変数」を参照してください。
dlopen(3C) とともに、明示的な依存関係の定義として使用されるパス名は、すべての予約トークンを使用できるようになりました。付録 C 動的ストリングトークンによる依存関係の確立を参照してください。予約トークンを使用するパス名は、新ユーティリティー moe(1) で評価されます。
dlsym(3C) と新しいハンドル RTLD_PROBE によって、特定のインタフェースの存在有無を確認するための最適な方法が実現されました。「dlopen() の代替手段の提供」を参照してください。
リンカーによって、ELF オブジェクトのハードウェアおよびソフトウェア要件をより柔軟に定義できるようになりました。「ハードウェアおよびソフトウェア機能に関するセクション」を参照してください。
実行時リンク監査インタフェース la_objfilter() が追加されました。「監査インタフェースの関数」を参照してください。
共有オブジェクトのフィルタ処理が拡張され、シンボルごとのフィルタ処理が可能になりました。「フィルタとしての共有オブジェクト」を参照してください。
新しいセクションタイプ SHT_SUNW_ANNOTATE、SHT_SUNW_DEBUGSTR、SHT_SUNW_DEBUG、および SHT_SPARC_GOTDATA がサポートされるようになりました。表 7–5 を参照してください。
新しいユーティリティー lari(1) により、実行時インタフェースの分析が簡単になりました。
リンカーオプション -z direct、-z nodirect や、DIRECT および NODIRECT mapfile 指令などにより、直接結合をより細かく制御できるようになりました。「mapfile を使用した追加シンボルの定義」と「直接結合」を参照してください。
ld(1) の性能の向上によって、大規模なアプリケーションのリンク編集時間を大幅に短縮できます。
RTLD_FIRST フラグを使って作成された dlopen(3C) ハンドルを使用することで、dlsym(3C) のシンボル処理時間を短縮できます。「新しいシンボルの入手」を参照してください。
実行時リンカーが不正プロセスを終了させるために使用する信号は、dlinfo(3C) フラグである RTLD_DI_GETSIGNAL と RTLD_DI_SETSIGNAL を使用して管理できるようになりました。
文字列テーブルの圧縮がリンカーにより提供されます。これにより、 .dynstr セクションおよび .strtab セクションが縮小することがあります。このデフォルト処理は、リンカーの -z nocompstrtab オプションで無効にできます。「文字列テーブルの圧縮」を参照してください。
-z ignore オプションが、リンク編集時に参照されないセクションを排除するように拡張されました。「使用されない対象物の削除」を参照してください。
参照されない依存関係を、ldd(1) を使用して特定できるようになりました。-U オプションを参照してください。
リンカーにより、拡張 ELF セクションが提供されます。「ELF ヘッダー」、表 7–5、「セクション」、表 7–10、および 「シンボルテーブルセクション」を参照してください。
protected mapfile 指令により、シンボルの可視性をより柔軟に定義できるようになりました。「mapfile を使用した追加シンボルの定義」を参照してください。
スレッド固有領域 (TLS) のサポートが提供されます。第 8 章スレッド固有領域 (TLS)を参照してください。
-z rescan オプションにより、アーカイブライブラリをリンク編集に指定する際の柔軟性が向上しました。「コマンド行上のアーカイブの位置」を参照してください。
-z ld32 および -z ld64 オプションにより、リンカーサポートインタフェースを使用する際の柔軟性が向上しました。「32 ビットおよび 64 ビット環境」を参照してください。
補助リンカーサポートインタフェース ld_input_done()、 ld_input_section()、ld_input_section64()、および ld_version() が追加されました。「サポートインタフェース関数」を参照してください。
実行時リンカーにより解釈される環境変数を、構成ファイル内で指定することにより、複数のプロセスに対応させることができるようになりました。crle(1) のマニュアルページの -e および -E オプションを参照してください。
64 ビット SPARC オブジェクト内部で、32,768 以上のプロシージャーリンクテーブルエントリがサポートされるようになりました。「64 ビット SPARC: プロシージャーのリンクテーブル」を参照してください。
mdb(1) デバッガモジュールを使用することで、実行時リンカーのデータ構造の検査を、デバッグプロセスの一部として実行できます。「デバッガモジュール」を参照してください。
bss セグメント宣言指令により、bss セグメントをより簡単に作成できます。「セグメントの宣言」を参照してください。
使用されない依存関係を、ldd(1) を使用して特定できるようになりました。詳細は、-u オプションを参照してください。
さまざまな ELF ABI 拡張が追加されました。「初期設定および終了セクション」、「初期設定および終了ルーチン」、表 7–3、表 7–8、表 7–9、「グループセクション」、表 7–10、表 7–20、表 7–32、表 7–33、および 「プログラムの読み込み (プロセッサ固有)」を参照してください。
リンカー固有の環境変数に _32 および _64 の 2 つの接尾辞が使用可能になりました。これにより、環境変数がより柔軟に使用できます。「環境変数」を参照してください。
dladdr1() の導入により、dladdr(3C) から入手可能なシンボリック情報が拡張されました。
動的オブジェクトの $ORIGIN を、dlinfo(3C) から入手可能になりました。
crle(1) で作成された実行時構成ファイルの管理が、簡単になりました。構成ファイルを検査することで、ファイル作成に使用されたコマンド行オプションが表示されます。-u オプションを指定すると、更新機能を利用できます。
実行時リンカーおよびデバッガインタフェースが拡張され、プロシージャーリンクテーブルエントリの解決を検出できるようになりました。この拡張は、新しいバージョンナンバーで識別することができます。Agent Manipulation Interfaces()の 「エージェント操作インタフェース」 を参照してください。この更新により rd_plt_info_t 構造体が機能拡張されます。「プロシージャーのリンクテーブルのスキップ」の rd_plt_resolution() を参照してください。
新しい mapfile セグメント記述子 STACK を使用してアプリケーションスタックを非実行可能ファイルに定義することができます。「セグメントの宣言」を参照してください。
実行時リンカーが、環境変数 LD_BREADTH を無視します。「初期設定および終了ルーチン」を参照してください。
実行時リンカーおよびそのデバッガインタフェースが拡張され、実行時解析とコアファイル解析の性能が向上しました。この拡張は、新しいバージョンナンバーで識別することができます。Agent Manipulation Interfaces()の 「エージェント操作インタフェース」 を参照してください。この更新により rd_loadobj_t 構造体が拡張されます。「読み込み可能オブジェクトの走査」を参照してください。
ディスプレイスメント再配置されたデータがコピー再配置で使用されるか、使用される可能性があることを検査できるようになりました。「ディスプレイスメント再配置」を参照してください。
64 ビットフィルタが、リンカーの -64 オプションを使用して mapfile から単独で構築できます。「標準フィルタの生成」を参照してください。
動的オブジェクトの依存関係の検索に使用される検索パスを、dlinfo(3C) を使って調べることができます。
新しいハンドル RTLD_SELF により、dlsym(3C) と dlinfo(3C) の検索セマンティクスが拡張されました。
動的オブジェクトの再配置に使用される実行時シンボル検索メカニズムを、各動的オブジェクト内に直接結合情報を確立することによって、大幅に削減することができます。「直接結合」を参照してください。
ファイルを前もって読み込むことのできるセキュリティー保護されたディレクトリが、32 ビットオブジェクトの場合は /usr/lib/secure、64 ビットオブジェクトの場合は /usr/lib/secure/64 となりました。「セキュリティー」を参照してください。
リンカーの -z nodefaultlib オプションおよび新ユーティリティー crle(1) によって作成される実行時構成ファイルを使用することにより、実行時リンカーの検索パスを変更する柔軟性が向上しました。「実行時リンカーが検索するディレクトリ」と 「デフォルトの検索パスの設定」を参照してください。
新しい EXTERN mapfile 指令により、-z defs の使用に外部的に定義されたシンボルを提供します。「mapfile を使用した追加シンボルの定義」を参照してください。
新しい $ISALIST、$OSNAME、および $OSREL 動的ストリングトークンにより、命令セット固有およびシステム固有の依存関係を確立する際の柔軟性が向上しました。「動的ストリングトークン」を参照してください。
リンカーの -p および -P オプションにより、実行時リンク監査ライブラリを呼び出す方法が追加されました。「ローカル監査の記録」を参照してください。実行時リンク監査インタフェース、la_activity() および la_objsearch() が追加されました。「監査インタフェースの関数」を参照してください。
新しい動的セクションタグ DT_CHECKSUM により、ELF ファイルとコアイメージ との統合が可能になりました。表 7–32 を参照してください。