Linker and Libraries Guide

Agent Manipulation

rd_init()

rd_err_e rd_init(int version);

This function establishes the rtld-debugger version requirements. The base version is defined as RD_VERSION1. The current version is always defined by RD_VERSION.

Version RD_VERSION2, added in Solaris810/00, extends the rd_loadobj_t structure (see the rl_flags, rl_bend and rl_dynamic fields in "Scanning Loadable Objects").

Version RD_VERSION3, added in Solaris801/01, extends the rd_plt_info_t structure (see the pi_baddr and pi_flags fields in "Procedure Linkage Table Skipping").

If the version requirement of the controlling process is greater than the rtld-debugger interface available, then RD_NOCAPAB is returned.

rd_new()

rd_agent_t * rd_new(struct ps_prochandle * php);

This function creates a new exported interface agent. php is a cookie created by the controlling process to identify the target process. This cookie is used by the imported interface offered by the controlling process to maintain context, and is opaque to the rtld-debugger interface.

rd_reset()

rd_err_e rd_reset(struct rd_agent * rdap);

This function resets the information within the agent based off the same ps_prochandle structure given to rd_new(). This function is called when a target process is restarted.

rd_delete()

void rd_delete(struct rd_agent * rdap);

This function deletes an agent and frees any state associated with it.