ldr.h 文件

用途

描述 ld_infold_xinfo 数据类型以及关联的装入程序入口点。

语法

#include < sys/ldr.h >

描述

/usr/include/sys/ldr.h 头文件包含 ld_infold_xinfo 数据结构的声明以及可用于进程和内核扩展的系统装入程序入口点。

ld_info 结构描述了在跟踪进程 (使用 跟踪 系统调用) 或检查核心文件的上下文中可装入的模块。 ldr.h 文件可以定义 ld_info 结构的 2 变体,一个用于描述 32 位进程 (__ld_info32) ,另一个用于描述 64 位进程 (__ld_info64)。 如果定义了 __LDINFO_PTRACE32__ 符号,那么 struct __ld_info32 类型也是如此。 如果定义了 __LDINFO_PTRACE64__ 符号,那么 struct __ld_info64 类型也是如此。 如果编译方式为 32 位,并且定义了 __LDINFO_PTRACE32__ 符号,那么 struct __ld_info32struct ld_info 类型等效。 如果编译方式为 64 位,并且定义了 __LDINFO_PTRACE64__ 符号,那么 struct __ld_info64struct ld_info 类型等效。

当在 32 位程序中使用 跟踪 来调试 64 位进程时,请定义 __LDINFO_PTRACE64__。 当在 64 位程序中使用 跟踪 来调试 32 位进程时,请定义 __LDINFO_PTRACE32__。

这些结构的字段的类型和大小取决于编译方式为 32 位还是 64 位。 在两种结构方式下都会生成相同的字段名称,但 64 位结构具有 ldinfo_flags 字段的情况除外。

__ld_info32 和 __ld_info64 结构包含所指示大小和类型的以下字段; 如果列示了两种类型,那么在编译方式为 32 位时将使用第一种类型,而在方式为 64 位时将使用第二种类型:

字段和描述 __ld_info32 __ld_info64
ldinfo_next
与下一个条目的当前条目的偏移量,如果是最后一个条目,则为零。
  • 大小: 4
  • 类型: uint
  • 大小: 4
  • 类型: uint
ldinfo_flags
标志。
  • 大小: 不适用
  • 类型: 不适用
  • 大小: 4
  • 类型: uint
ldinfo_fd
ptrace 返回给调试器的文件描述符。
  • 大小: 4
  • 类型: 整数
  • 大小: 4
  • 类型: 整数
ldinfo_core
对象的核心文件中的偏移量。 (覆盖了 ldinfo_fd 字段。)
  • 大小: 4
  • 类型: 整数
  • 大小: 8
  • 类型: 长整型,长整型
ldinfo_textorg
已装入程序映像的有效地址,包括 XCOFF 头。
  • 大小: 4
  • 类型: void * , uint
  • 大小: 8
  • 类型: 无符号长整型,空 *
ldinfo_textsize
已装入程序映像的长度。
  • 大小: 4
  • 类型: 整数
  • 大小: 8
  • 类型: 长整型,长整型
ldinfo_dataorg
数据开始时的有效地址。
  • 大小: 4
  • 类型: void * , uint
  • 大小: 8
  • 类型: 无符号长整型,空 *
ldinfo_datasize
数据的大小,包括 .bss 部分。
  • 大小: 4
  • 类型: 整数
  • 大小: 8
  • 类型: 长整型,长整型
ldinfo_filename
Nul-terminated 路径名后跟 nul-terminated 成员名; 如果不是归档,那么成员名为空。
  • 大小: 变量
  • 类型: char[2]
  • 大小: 变量
  • 类型: char[2]

ld_xinfo 结构与 ld_info 结构类似,但 ld_xinfo 结构具有用于定义线程本地存储器的模块的其他字段。 此外,所有字段都足够大,足以描述 64 位过程的区域,因此只有 ld_xinfo 结构的单个变体存在。

ld_xinfo 结构中的额外字段如下所示:

字段 描述
ldinfo_tdatasize .tdata 部分的大小。
ldinfo_tbsssize .tbss 部分的大小。
ldinfo_tdataorg .tdata的初始化模板的有效地址。
ldinfo_tdataoff 模块的线程本地存储器在其区域中的偏移量。
ldinfo_tls_rnum 线程本地存储区域号。

此外,在 ld_xinfo 结构中, ldinfo_filename 字段具有不同的解释。 此字段在 ld_xinfo 结构中的值是从结构开头到后跟以 null 结束的成员名的以 null 结束的路径名的偏移量。

ldr.h 头声明以下函数:
int           kmod_load(caddr_t path, uint flags, caddr_t libpath, mid_t *kmid);
int           kmod_unload(mid_t kmid, uint flags);
void         (*(kmod_entrypt(mid_t kmid, uint flags)))();
int           ld_info(int __flags, pid_t __pid, void *__buffer, unsigned int __length);
__LOAD_T     *load(char *__filenameparm, uint __flags, char *__libpathparm);
int           loadbind(int __lflags, void *__exporter, void *__importer);
int           unload(void *__function);
int           loadquery(int __lflags, void *__buffer, unsigned int __length);
__handler_t  *__lazySetErrorHandler( __handler_t *fp );