Modules have been modified by the ld -sor ld -xoptions or tools (for example, strip(1)). The incremental linking requires the parts of the output load module which are stripped out with these options.

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.

Objects are added/removed to/from the linker command line.

Using Incremental Linking Options

To use incremental linking from your HP C (cc) or HP aC++ (aCC) compiler, specify the +ild from your compiler command line.

If the output file does not already exist or if it was created without the +ild option, the linker performs an initial incremental link. The output file produced is suitable for subsequent incremental links. The incremental link option is valid for both executable and shared library links. The +ild option is not valid for relocatable links, options (or tools) that strip the output module, and certain optimization options.

The incremental linker support the +ildrelink option to allow you to instruct the incremental linker to ignore the output load module and perform an initial incremental relink. In certain situations (for example, when internal padding space is exhausted), the incremental linker is forced to perform an initial incremental link. You can avoid such unexpected initial incremental links by periodically rebuilding the output file with the +ildrelink option.

The ld command supports additional options with +ild. The +ildnowarn option suppresses all incremental-linking related warning messages. The +ildpad percentage controls the amount of padding (percentage) the incremental linker allocates. You can use these options with the -Wl, arg1... compiler option.

See ld(1) for more information.

Archive Library Processing

The incremental linker searches an archive library if there are unsatisfied symbols. It extracts all archive members satisfying unsats and processes them as new object files. If an archive library is modified, the linker reverts to an initial incremental link.

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 unsats the same way it does 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 unsats. The dynamic loader detects them at run time. If any of the shared libraries on the command line was modified, the linker reverts to an initial incremental link.

Performance

Performance of the incremental linker may suffer greatly if you change a high percentage of object files.

The incremental linker may not link small programs much faster, and the relative increase in size of the executable is greater than that for larger programs.

Incremental Linking 219