HP-UX Reference (11i v2 07/12) - 1 User Commands A-M (vol 1)

l
ld_ia(1)
Integrity Systems Only
ld_ia(1)
The linker performs the following different modes of linking:
normal link: the default operation mode in which the linker links all modules.
initial incremental link: the mode entered when you request an incremental link, but the output
module created by the incremental linker does not exist, or it exists but the incremental linker is unable
to perform an incremental update.
incremental link: the mode entered when you request an incremental link, an output module created by
the incremental linker exists, and the incremental linker does not require an initial incremental link.
Incremental links are usually much faster than regular links. On the initial link, the incremental linker
requires about the same amount of time that a normal link process requires, but subsequent incremental
links can be much faster than a normal link.
A change in one object file in a moderate size link (tens of files, several megabytes total) normally is about
10 times faster than a regular ld link. The incremental linker perform as many incremental links as allo-
cated padding space and other constrains permit. The cost of the reduced link time is an increase in the
size of the executable or shared library.
The incremental linker allocates padding space for all components of the output file. Padding makes
modules larger than those modules linked by
ld. As object files increase in size during successive incre-
mental links, the incremental linker can exhaust the available padding. If this occurs, it displays a warning
message and does a complete initial incremental link of the module.
On the initial incremental link, the linker processes the input object files and libraries in the same way as
the normal link. In addition to the normal linking process, the incremental linker saves information about
object files, global symbols, and relocations, and pads sections in the output file for expansion. On subse-
quent incremental links, the linker uses timestamps to determine which object files have changed, and
updates those modules.
Under certain conditions, the incremental linker cannot perform incremental links. When this occurs, the
incremental linker automatically performs an initial incremental link to restore the process. In the follow-
ing situations, the linker automatically performs an initial incremental link of the output file:
Changed linker command line, where the linker command line does not match the command line stored
in the output file. (With the exceptions of the verbose and tracing options)
Any of the padding spaces have been exhausted.
Modules have been modified by the ld -s or ld -x options or tools (for example, strip(1)).
Incompatible incremental linker version, when you run a new version of the incremental linker on an
executable created by an older version.
New working directory, where the incremental linker performs an initial incremental link if current
directory changes.
Archive or shared libraries are added/removed to/from the linker command line.
Object files are removed from the linker command line.
Use the
+help option or see the Linker and Libraries User’s Guide for more information.
Archive Library Processing
The incremental linker searches an archive library if there are unsatisfied symbols. It extracts all archive
members satisfying unsatisfied symbols and processes them as new object files. If an archive library is
modified, the linker replaces the modified archive library.
An object file extracted from an archive library in the previous link remains in the output load module even
if all references to symbols defined in the object file have been removed. The linker removes these object
files when it performs the next initial incremental link.
Shared Library Processing
In an initial incremental link, the linker scans shared library symbol tables and resolves unsatisfied sym-
bols the same way it would in a regular link. In incremental links, the linker does not process shared
libraries and their symbol tables at all and does not report shared library unsatisfied symbols. The detec-
tion of unsatisfied symbols is left to the dynamic loader. If any of the shared libraries on the command line
was modified, the linker reverts to an initial incremental link.
HP-UX 11i Version 2: December 2007 Update 16 Hewlett-Packard Company 513