リンカーとライブラリ

エージェント操作

rd_init()

rd_err_e rd_init(int version);

この関数は、rtld-デバッガバージョン条件を確立します。ベースとなるバージョンは、RD_VERSION1 として定義されています。現在の「バージョン」は常に RD_VERSION で定義されます。

Solaris 8 10/00 で追加されたバージョン RD_VERSION2 は、rd_loadobj_t 構造体を拡張するものです (「読み込み可能オブジェクトの走査」rl_flagsrl_bendrl_dynamic の各フィールドを参照)。

Solaris 8 1/01 で追加されたバージョン RD_VERSION3 は、rd_plt_info_t 構造体を拡張するものです (「プロシージャのリンクテーブルのスキップ」pi_baddr および pi_flags の各フィールドを参照)。

制御プロセスのバージョン条件が使用可能な rtld-デバッガインタフェースよりも大きい場合は、RD_NOCAPAB が返されます。

rd_new()

rd_agent_t * rd_new(struct ps_prochandle * php);

この関数は、新しいエクスポートのインタフェースエージェントを作成します。「php」は、制御プロセスによってターゲットプロセスを特定するために作成された cookie です。この cookie は、制御プロセスによってコンテキストを維持するために提供される重要なインタフェースで使用されるものであり、rtld-デバッガインタフェースに対して不透明です。

rd_reset()

rd_err_e rd_reset(struct rd_agent * rdap);

この関数は、rd_new() に指定された同じ ps_prochandle 構造に基づくエージェント内の情報をリセットします。この関数は、ターゲットプロセスが再スタートされると呼び出されます。

rd_delete()

void rd_delete(struct rd_agent * rdap);

この関数は、エージェントを削除し、それに関連するすべての状態を解除します。