Appendix DNew Linker and Libraries Features and Updates
This appendix provides an overview of new features and updates that have been added to the Solaris operating environment and indicates the release to which they were added:
Solaris 9 4/04 Release
The new section types SHT_SUNW_ANNOTATE, SHT_SUNW_DEBUGSTR, SHT_SUNW_DEBUG, and SHT_SPARC_GOTDATA are supported.
See Table 7-12.
Greater control of direct bindings is provided with the link-editor options -z direct and -z nodirect, together with the DIRECT
and NODIRECT mapfile directives. See Defining Additional Symbols, and Direct Binding.
Solaris 9 12/03 Release
Solaris 9 8/03 Release
dlsym(3DL) symbol processing can be reduced
using a dlopen(3DL) handle that is created with the RTLD_FIRST flag. See Obtaining New Symbols.
The signal used by the runtime linker to terminate an erroneous process can be managed using the dlinfo(3DL) flags RTLD_DI_GETSIGNAL, and RTLD_DI_SETSIGNAL.
Solaris 9 12/02 Release
The link-editor provides string table compression, that can result in reduced .dynstr and .strtab sections. This default processing can be disabled
using the link-editor's -z nocompstrtab option. See String Table Compression.
The -z ignore option has been extended to eliminate unreferenced sections during a link-edit. See Remove Unused Material.
Unreferenced dependencies can be determined using ldd(1).
See the -U option.
The link-editors support extended ELF sections. See ELF Header, Table 7-12, Sections, Table 7-16
and Symbol Table Section.
Greater flexibility in defining a symbols visibility is provided with the protected mapfile directive. See Defining Additional Symbols.
Solaris 9 Release
Thread-Local Storage (TLS) support is provided. See Chapter 8, Thread-Local Storage.
The -z rescan option provides greater flexibility in specifying archive libraries to a link-edit. See Position of an Archive on the Command Line.
The -z ld32 and -z ld64 options provide greater flexibility in using the link-editor support interfaces. See 32-Bit and 64-Bit Environments.
Additional link-editor support interfaces ld_input_done(), ld_input_section(), ld_input_section64() and ld_version()
have been added. See Support Interface Functions.
Environment variables interpreted by the runtime linker can now be established for multiple processes by specifying these variables within a configuration file. See the -e
and -E options of crle(1).
Support for more than 32,768 procedure linkage table entries within 64-bit SPARC objects has been added. See SPARC: 64-bit Procedure Linkage Table.
An mdb(1) debugger module enables you to inspect
runtime linker data structures as part of process debugging. See Debugger Module.
The bss segment declaration directive makes the creation of a bss segment easier. See Segment Declarations.
Solaris 8 07/01 Release
Unused dependencies can be determined using ldd(1).
See the -u option.
Various ELF ABI extensions have been added. See Initialization and Termination Sections, Initialization and Termination Routines, Table 7-4, Table 7-7, Table 7-14, Table 7-15, Group Section, Table 7-16, Table 7-24, Table 7-42, Table 7-43, and Program Loading (Processor-Specific).
Greater flexibility in the use of link-editor environment variables has been provided with the addition of _32 and _64 variants. See Environment Variables.
Solaris 8 01/01 Release
The symbolic information available from dladdr(3DL)
has been enhanced with the introduction of dladdr1().
The $ORIGIN of a dynamic object can be obtained from dlinfo(3DL).
The maintenance of runtime configuration files created with crle(1)
has been simplified. Inspection of a configuration file displays the command-line options used to create the file. An update capability is provided with the -u option.
The runtime linker and its debugger interface have been extended to detect procedure linkage table entry resolution. This update is identified by a new version number. See rd_init() under Agent Manipulation Interfaces. This update extends the rd_plt_info_t structure. See rd_plt_resolution() under Procedure Linkage Table Skipping.
An application's stack can be defined non-executable using the new mapfile segment descriptor STACK. See Segment Declarations.
Solaris 8 10/00 Release
The environment variable LD_BREADTH is ignored by the runtime linker. See Initialization and Termination Routines.
The runtime linker and its debugger interface have been extended for better runtime and core file analysis. This update is identified by a new version number. See rd_init()
under Agent Manipulation Interfaces. This update extends the rd_loadobj_t structure. See Scanning Loadable Objects.
You can now validate displacement relocated data in regard to its use, or possible use, with copy relocations. See Displacement Relocations.
64-bit filters can be built solely from a mapfile using the link-editor's -64 option. See Generating Standard Filters.
The search paths used to locate the dependencies of dynamic objects can be inspected using dlinfo(3DL).
dlsym(3DL) and dlinfo(3DL) lookup semantics have been expanded with a new handle RTLD_SELF.
The runtime symbol lookup mechanism used to relocate dynamic objects can be significantly reduced by establishing direct binding information within each dynamic object. See Direct Binding.
|