按照以下顺序将符号写入符号表。
任何符号表中的索引 0 用于表示未定义的符号。符号表中的第一项始终完全为零。因此符号类型为 STT_NOTYPE。
如果符号表包含任何局部符号,符号表中的第二项是提供文件名的 STT_FILE 符号。
STT_SECTION 类型的节符号。
STT_REGISTER 类型的寄存器符号。
缩减到局部作用域的全局符号。
对于提供局部符号的每个输入文件,提供输入文件名称的 STT_FILE 符号,后跟相关符号。
在符号表中,全局符号紧跟局部符号。第一个全局符号由符号表 sh_info 值标识。局部符号和全局符号始终以这种方式保持彼此独立,不能混合。
这些符号表是 Oracle Solaris OS 中的特殊内容。
此符号表包含说明关联的 ELF 文件的每个符号。此符号表通常是不可分配的,因此在进程的内存映像中不可用。
通过使用 mapfile 和 ELIMINATE 关键字可以从 .symtab 中消除全局符号。请参见删除符号和SYMBOL_SCOPE / SYMBOL_VERSION 指令。
此表包含 .symtab 表中支持动态链接所需的符号的子集。此符号表可供分配,因此在进程的内存映像中可用。
.dynsym 表以标准 NULL 符号开始,后跟文件全局符号。STT_FILE 符号通常不包含在此符号表中。如果重定位项需要,可能会包含 STT_SECTION 符号。
扩充 .dynsym 表中包含的信息的可选符号表。.SUNW_ldynsym 表包含局部函数符号。此符号表可供分配,因此在进程的内存映像中可用。当不可分配的 .symtab 不可用或已从文件中剥离时,调试器通过使用此节可在运行时上下文中产生精确的栈跟踪。此节还可以为运行时环境提供其他符号信息,以便与 dladdr(3C) 一起使用。
仅当 .dynsym 表存在时,才存在 .SUNW_ldynsym 表。当 .SUNW_ldynsym 节和 .dynsym 节同时存在时,链接编辑器会将其数据区域紧邻彼此放置,其中 .SUNW_ldynsym 放置在前面。这种放置方式可以使两个表看起来像是一个更大的连续符号表。此符号表遵从先前枚举的标准布局规则。