本附录概述了已添加到 Solaris OS 各个发行版中的更新和新增功能。
可以使用 dlinfo(3C) 标志 RTLD_DI_ARGSINFO 获取命令行参数、环境变量以及进程的辅助向量阵列。
通过链接编辑器 -B nodirect 选项,可以更加灵活地禁止对直接绑定进行外部引用。 请参见直接绑定。
目前支持 x64。请参见表 7–5、特殊节、x64: 重定位类型、x64: 访问线程局部变量和x64: 线程局部存储的重定位类型。
重新构造文件系统会将许多组件从 /usr/lib 下移动到 /lib 下。对链接编辑器和运行时链接程序的缺省搜索路径已相应进行了更改。 请参见链接编辑器搜索的目录、运行时链接程序搜索的目录和安全性。
不再提供系统归档库。因此,无法再创建静态链接的可执行文件。 请参见静态可执行文件。
通过 crle(1) 的 -A 选项,可以更加灵活地定义替代依赖项。
现在,链接编辑器可处理未指定值的环境变量。 请参见环境变量。
用于 dlopen(3C) 并作为显式依赖性定义的路径名现在可以使用任何保留的标记。 请参见附录 C,使用动态字符串标记建立依赖性。通过新的实用程序 moe(1) 可提供对使用保留标记的路径名的评估。
通过 dlsym(3C) 和新句柄 RTLD_PROBE 可提供用于测试接口是否存在的最佳方法。 请参见提供 dlopen() 的替代项。
通过链接编辑器,可以更加灵活地定义 ELF 目标文件的硬件和软件要求。 请参见硬件和软件功能节。
已添加了运行时链接审计接口 la_objfilter()。 请参见审计接口函数。
扩展了共享库过滤功能,可逐个符号进行过滤。 请参见作为过滤器的共享库。
支持新的节类型 SHT_SUNW_ANNOTATE、SHT_SUNW_DEBUGSTR、SHT_SUNW_DEBUG 以及 SHT_SPARC_GOTDATA。 请参见表 7–5。
通过新的实用程序 lari(1) 简化了运行时接口的分析。
通过链接编辑器选项 -z direct 和 -z nodirect,以及 DIRECT 和 NODIRECT mapfile 指令,可以进一步控制直接绑定。请参见定义其他符号和直接绑定。
ld(1) 内的性能改进可显著缩短大型应用程序的链接编辑时间。
可以使用通过 RTLD_FIRST 标志创建的 dlopen(3C) 句柄来减少 dlsym(3C) 符号处理。 请参见获取新符号。
可以使用 dlinfo(3C) 标志 RTLD_DI_GETSIGNAL 和 RTLD_DI_SETSIGNAL 来管理运行时链接程序用来终止错误进程的信号。
链接编辑器提供字符串表压缩,从而可以生成简化的 .dynstr 节和 .strtab 节。可以使用链接编辑器的 -z nocompstrtab 选项禁用此缺省处理。 请参见字符串表压缩。
扩展了 -z ignore 选项,可在链接编辑过程中删除未引用部分。 请参见删除未使用的材料。
可以使用 ldd(1) 确定未引用的依赖项。请参见 -U 选项。
通过 protected mapfile 指令,可以更加灵活地定义符号可见性。 请参见定义其他符号。
提供了线程局部存储 (Thread-Local Storage, TLS) 支持。 请参见第 8 章,线程局部存储。
-z rescan 选项在指定归档库进行链接编辑方面提供了更大的灵活性。 请参见命令行中归档的位置。
-z ld32 和 -z ld64 选项在使用链接编辑器支持接口方面提供了更大的灵活性。 请参见32 位环境和 64 位环境。
添加了其他链接编辑器支持接口 ld_input_done()、ld_input_section()、ld_input_section64() 和 ld_version()。 请参见支持接口函数。
现在,可以通过在配置文件中指定由运行时链接程序解释的环境变量,为多个进程建立这些变量。请参见 crle(1) 的 -e 和 -E 选项。
添加了对 64 位 SPARC 目标文件中超过 32,768 个过程链接表项的支持。 请参见64 位 SPARC: 过程链接表。
通过 bss 段的声明指令,可以更轻松地创建 bss 段。 请参见段声明。
可以使用 ldd(1) 确定未使用的依赖项。请参见 -u 选项。
添加了各种 ELF ABI 扩展格式。请参见初始化和终止节、初始化和终止例程、表 7–3、表 7–8、表 7–9、组节、表 7–10、表 7–20、表 7–32、表 7–33 以及程序装入(特定于处理器)。
通过添加 _32 和 _64 变体,可以更加灵活地使用链接编辑器环境变量。 请参见环境变量。
通过引入 dladdr1(),增强了通过 dladdr(3C) 可用的符号信息。
可以从 dlinfo(3C) 获取动态库的 $ORIGIN。
简化了通过 crle(1) 创建的运行时配置文件的维护。配置文件的检查会显示用于创建此文件的命令行选项。提供了通过 -u 选项进行更新的功能。
扩展了运行时链接程序及其调试器接口,可检测过程链接表项的解析。此更新通过新版本号进行标识。请参见代理处理接口下的 rd_init()。此更新会扩展 rd_plt_info_t 结构。请参见跳过过程链接表下的 rd_plt_resolution()。
可以使用新的 mapfile 段描述符 STACK 将应用程序的栈定义为不可执行。 请参见段声明。
运行时链接程序会忽略环境变量 LD_BREADTH。 请参见初始化和终止例程。
扩展了运行时链接程序及其调试器接口,从而可更好地进行运行时和核心转储文件分析。此更新通过新版本号进行标识。请参见代理处理接口下的 rd_init()。此更新会扩展 rd_loadobj_t 结构。 请参见扫描可装入目标文件。
现在,可以通过副本重定位来验证关于位移重定位数据的使用或可能的使用。 请参见位移重定位。
通过使用链接编辑器的 -64 选项可以仅从 mapfile 生成 64 位过滤器。 请参见生成标准过滤器。
可以使用 dlinfo(3C) 检查用于定位动态库的依赖项的搜索路径。
通过新句柄 RTLD_SELF 扩展了 dlsym(3C) 和 dlinfo(3C) 查找语义。
可以通过在每个动态库中建立直接绑定信息,显著减少用于重定位动态库的运行时符号查找机制。 请参见直接绑定。
现在,可以预装入文件的安全目录为 /usr/lib/secure(针对 32 位目标文件)和 /usr/lib/secure/64(针对 64 位目标文件)。 请参见安全性。
通过链接编辑器的 -z nodefaultlib 选项以及新实用程序 crle(1) 创建的运行时配置文件,可以更加灵活地修改运行时链接程序的搜索路径。 请参见运行时链接程序搜索的目录和配置缺省搜索路径。
通过新的 EXTERN mapfile 指令,可以将 -z defs 用于外部定义的符号。 请参见定义其他符号。
新的 $ISALIST、$OSNAME 以及 $OSREL 动态字符串标记在建立特定于指令集和系统的依赖项方面提供了更大的灵活性。 请参见动态字符串标记。
链接编辑器选项 -p 和 -P 提供了调用运行时链接审计库的其他方法。 请参见记录局部审计程序。添加了运行时链接审计接口 la_activity() 和 la_objsearch()。 请参见审计接口函数。
通过新的动态节标记 DT_CHECKSUM,可以协调 ELF 文件与核心映像。 请参见表 7–32。
目前支持 64 位的 ELF 目标文件格式。 有关详细信息,请参见文件格式。链接编辑器针对 64 位处理的扩展和差异包括使用 /usr/lib/64(请参见链接编辑器搜索的目录、运行时链接程序搜索的目录以及命名约定)、环境变量 LD_LIBRARY_PATH_64(请参见使用环境变量和运行时链接程序搜索的目录)以及运行时链接程序 /usr/lib/64/ld.so.1(请参见第 3 章,运行时链接程序)。
可以使用链接编辑器的 -z combreloc 选项生成包含优化重定位节的共享库。 请参见组合重定位节。
新的 $ORIGIN 动态字符串标记在非绑定软件中建立依赖项方面提供了更大的灵活性。 请参见动态字符串标记。
现在,可以延迟共享库的装入,直到运行的程序实际引用了此目标文件为止。 请参见延迟装入动态依赖项。
通过新的 SHT_SUNW_COMDAT 节类型,可删除多重定义的符号。 请参见COMDAT 节。
新的 SHT_SUNW_move 节类型会启用部分初始化的符号。 请参见移动节。
添加了运行时链接审计接口 la_symbind64()、la_sparcv9_pltenter()、la_pltexit64() 以及新的链接审计标志 LA_SYMB_ALTVALUE。 请参见审计接口函数。
弱符号引用可以使用链接编辑器的 -z weakextract 选项触发归档成员提取。使用 -z allextract 选项可以提取所有归档成员。 请参见归档处理。
可以使用链接编辑器的 -z ignore 选项,忽略所生成的目标文件未引用的在链接编辑过程中指定的共享库。 请参见共享库处理。
链接编辑器可生成保留符号 _START_ 和 _END_ 来提供建立目标文件地址范围的方法。 请参见生成输出文件。
对初始化和结束代码的运行时排序进行了更改,以更好地适应依赖性要求。 请参见初始化和终止例程。
针对 dlopen(3C) 扩展了符号解析语义。请参见符号查找、隔离组中的 RTLD_GROUP 以及目标文件分层结构中的 RTLD_PARENT。
对过滤器处理进行了扩展,从而可定义多个 filtee ,并可强制装入 这些 filtee。 请参见作为过滤器的共享库。
可以使用 mapfile 文件控制指令 $ADDVERS 记录其他版本的依赖项。 请参见到其他版本定义的绑定。
运行时链接程序审计接口支持从进程内监视和修改动态链接的应用程序。 请参见运行时链接程序审计接口。
运行时链接程序调试器接口支持从外部进程监视和修改动态链接的应用程序。 请参见运行时链接程序调试器接口。
支持附加的节信息。对于 SHN_BEFORE 和 SHN_AFTER,请参见表 7–4。对于 SHF_ORDERED 和 SHF_EXCLUDE,请参见表 7–8。
支持新的动态节标记 DT_1_FLAGS。有关各种标志值的信息,请参见表 7–34。
提供了演示 ELF 程序的软件包。 请参见第 7 章,目标文件格式。
目前,链接编辑器支持国际化消息。所有系统错误均使用 strerror(3C) 来进行报告。
通过新的 eliminate mapfile 指令或 -B eliminate 选项,可以删除局部符号表的各项。 请参见删除符号。