Oracle® Solaris 11.2 リンカーとライブラリガイド

印刷ビューの終了

更新: 2014 年 7 月
 
 

シンボルの直接結合の回避

直接結合は明示的な割り込みでオーバーライドできます。明示的な割り込みの定義を参照してください。しかし、明示的な割り込みの確立を制御できない場合があります。

たとえば、直接結合を使用する共有オブジェクトファミリを配布するとします。また、このファミリの共有オブジェクトによって提供されるシンボルに顧客が割り込むことがわかっています。これらの顧客が自身の割り込み要件を明示的に定義しないと、直接結合を使用する共有オブジェクトの再配布によって、その割り込みが損なわれる場合があります。

ユーザーが独自の割り込みルーチンを提供することを期待して、いくつかのデフォルトインタフェースを提供する共有オブジェクトを設計することもできます。

既存のアプリケーションが混乱を起こさないようにするため、1 つまたは複数のインタフェースに明示的に直接結合しない共有オブジェクトを配布できます。

動的オブジェクトへの直接結合は、次のいずれかのオプションを使用すると回避できます。

  • –B nodirect オプションを使用する。このオプションを使用すると、作成中のオブジェクトが提供するインタフェースに直接結合されません。

  • NODIRECT mapfile キーワードを使用する。このキーワードを使用すると、個別のシンボルへの直接結合を避けられます。このキーワードは、SYMBOL_SCOPE/SYMBOL_VERSION 指令で説明されています。

  • singleton シンボル定義の結果として。

nodirect とラベルが付けられたインタフェースは、外部オブジェクトから直接結合できません。また、nodirect とラベルが付けられたインタフェースは、同じオブジェクト内から直接結合できません。

次のセクションでは、直接結合回避メカニズムの各使用方法について説明します。