| The HP-UX Linker, Loader, and Tools enable you to create, control and manage the executables, shared libraries, or object files. The compiler invokes the linker with the appropriate options when building an executable or a shared library.
The HP-UX Linker features include:
- Symbol aliasing
- Incremental linking
- Function level versioning
- Faster program startup and better runtime performance with options, such as fastbind(1) and global symbol table
- Linker optimizations, such as elimination of unreferenced data or code
- Configurable security for setuid programs
- POSIX compliant dl* API routines along with HP-UX additions
- Support for industry standard Executable and Linking File format on Integrity and PA64 architectures
- Support for multiple page sizes and shared library segment merging for improved Translation Lookaside Buffer (TLB) performance
- Support for other tools, such as HP WDB and HP Caliper
- Support for filtered shared libraries, lazy loading, and direct binding
Loader performs the following tasks:
- Loading the shared libraries from disk to main memory for execution
- Resolving the symbols of a program made up of multiple shared libraries
In addition to the HP-UX Linker and Loader, a toolset is provided to help you find symbols, display and modify object files, and determine link order.
The following table lists the linker toolset:
||Takes one or more object files or libraries as input and combines them to produce a single (usually executable) file.
||Displays or modifies the internal attributes of an object file.
||Takes one or more 32-bit native code files (object files, shared and archive libraries, executables) and dumps information about them.
||Takes one or more object files or libraries and dumps information about them. Displays the contents of an ELF object file.
||Improves start-up time of programs that use shared libraries.
||Lists dynamic dependencies of executable files and shared libraries.
||Finds ordering relationship for an object library.
||Displays the symbol table of an object file.
||Lists the dynamic libraries linked into each process, including shared objects explicitly attached using dlopen/shl_load.
||Prints a stack trace (hex+symbolic) for each lwp (light weight process) in each process and core file.
||Prints sizes of object file elements.
||Strips symbol and debugging information from an object file, executable, or archive library.
|Dynamic Loader (dld.so/dld.sl)
||Responsible for setting up the runtime environment for:
- Using shared libraries
- Loading and unloading shared libraries
- Processing runtime symbol resolutions, etc.
|Programmatic interface to the dynamic loader (libdl/libdld)
Note: The libdl API is POSIX compliant.
|Using these files, a program can:
- Load or unload shared libraries
- Obtain runtime information about the shared libraries loaded
For example: symbol-to-address or address-to-symbol lookup, etc.