リンカーとライブラリ

フィルタ対象の処理

実行時リンカーによるフィルタ処理は、フィルタ内のシンボルへの参照が生じるまで、フィルタ対象の読み込みを延期します。この実装は、各フィルタ対象に対して必要に応じて dlopen(3X) を実行するフィルタに似ています。この実装は、ldd(1) などのツールによって生じる可能性がある、依存関係の報告における違いの原因となるものです。

デフォルトでは、ldd(1) は、動的オブジェクトの依存関係を表示するため、フィルタを別の依存関係と同様に報告します。ただし、 -d または -r オプションを使用すると、再配置処理が生じて、フィルタ内でシンボル参照が行われる場合があります。この場合は、フィルタ対象処理がトリガーされて、ldd(1) によってさらに依存関係が報告されることがあります。すべてのフィルタ対象が確実に即時処理されるようにするには、 -l オプションを使用できます。

フィルタを作成して、そのフィルタ対象を実行時に即時処理する場合は、リンカーの -z loadfltr オプションを使用できます。また、プロセス内のフィルタすべての即時処理は、環境変数 LD_LOADFLTR を設定することによってトリガーすることもできます。