链接程序和库指南

动态库填充

运行时链接程序的缺省行为取决于要装入动态库的操作系统(可以在其中最有效地引用这些目标文件)。如果能够对装入目标进程内存的目标文件执行填充,有些控制进程会从中受益。控制进程可以使用此接口请求此填充。

rd_objpad_enable()

此函数可启用或禁用对目标进程的任何随后装入的目标文件的填充。可以在装入目标文件的两端进行填充。

rd_err_e rd_objpad_enable(struct rd_agent * rdap, size_t padsize);

padsize 指定将任何目标文件装入内存前后要保留的填充大小(以字节为单位)。使用具有 PROT_NONE 权限和 MAP_NORESERVE 标志的 mmap(2) 可将填充保留为内存映射。实际上,运行时链接程序可保留与任何装入目标文件相邻的目标进程虚拟地址空间区域。控制进程随后可以利用这些空间区域。

如果 padsize 为 0,则对于后续目标文件将禁用目标文件填充。


注 –

通过使用 proc(1) 工具并引用 rd_loadobj_t 中提供的链接映射信息,可报告使用 mmap(2) 从具有 MAP_NORESERVE 标志的 /dev/zero 中获取的预留空间。