链接程序和库指南

代理处理接口

rd_init()

此函数可确定 rtld-debugger 的版本要求。基本 version 会定义为 RD_VERSION1。当前 version 始终由 RD_VERSION 定义。

rd_err_e rd_init(int version);

Solaris 8 10/00 发行版中添加的版本 RD_VERSION2 扩展了 rd_loadobj_t 结构。请参见扫描可装入目标文件中的 rl_flagsrl_bendrl_dynamic 字段。

Solaris 8 01/01 发行版中添加的版本 RD_VERSION3 扩展了 rd_plt_info_t 结构。请参见跳过过程链接表中的 pi_baddrpi_flags 字段。

如果控制进程要求的版本高于可用的 rtld-debugger 接口版本,则会返回 RD_NOCAPAB

rd_new()

此函数可创建新的导出接口代理。

rd_agent_t * rd_new(struct ps_prochandle * php);

php 是控制进程所创建的 cookie,用于标识目标进程。此 cookie 供控制进程提供的导入接口用于维护上下文,并且对于 rtld-debugger 接口是不透明的。

rd_reset()

此函数可基于为 rd_new() 提供的相同 ps_prochandle 结构重置代理内的信息。

rd_err_e rd_reset(struct rd_agent * rdap);

此函数在重新启动目标进程时调用。

rd_delete()

此函数可删除代理并释放与其关联的任何状态。

void rd_delete(struct rd_agent * rdap);