eld Manual
Table Of Contents
- eld Manual
- Legal Notices
- Contents
- What’s New in This Manual
- Manual Information
- New and Changed Information
- About This Manual
- Notation Conventions
- 1 Introduction to eld
- 2 eld Input and Output
- 3 Binding of References
- Overview
- Presetting Loadfiles
- To Preset or Not to Preset, and Creation of the LIC
- Handling Unresolved References
- Using User Libraries
- Creating Import Libraries
- Ignoring Optional Libraries
- Merging Symbols Found in Input Linkfiles
- Accepting Multiply-Defined Symbols
- Using the -cross_dll_cleanup option
- Specifying Which Symbols to Export, and Creating the Export Digest
- Public Libraries and DLLs
- The Public Library Registry
- 4 Other eld Processing
- Adjusting Loadfiles: The -alf Option
- Additional rules about -alf
- The -set and -change Options
- eld Functionality for 64-Bit
- Checking the C++ Language Dialect
- Renaming Symbols
- Creating Linker-Defined Symbols
- Updating Or Stripping DWARF Symbol Table Information
- Modifying the Data Sections that Contain Stack Unwinding Information
- Creating the MCB
- Processing of Floating Point Versions and Data Models
- Specification of the Main Entry Point
- Specifying Runtime Search Path Information for DLLs
- Merging Source RTDUs
- 5 Summary of Linker Options
- 6 Output Listings and Error Handling
- A TNS/E Native Object Files
- Glossary
- Index

Binding of References
eld Manual—527255-009
3-11
Creating Import Libraries
On Guardian, the linker knows that it is building a program that uses a user library
because either -set libname or -local_libname is given. If only one of these is
given, it provides a default for the other one. Specifically, if -local_libname is not
given, the linker uses the parameter of -set libname for the value of -
local_libname. Or, if -set libname is not given, the linker uses the name
specified for -local_libname, but fully qualifying it by adding the volume and
subvolume name if necessary, and omitting the system name. The volume and
subvolume names used are the defaults that this instance of the linker would use for
opening files with partially qualified names.
The rules on OSS are similar to those of Guardian. If -local_libname is not given,
the linker converts the name specified in -set libname to the form /G/a/b/c for use
at link time (not converting it to upper case). Conversely, if -set libname is not
given, the linker requires that the name specified for -local_libname be located in
the Guardian name space, and then the fully qualified Guardian name of the file, not
including the system name, is used for -set libname.
The linker is not required to open the -local_libname file unless it is either
presetting the main program or checking for unresolved references. If it can’t open the
file, that is handled the same way as if -allow_missing_libs was specified and
the linker couldn’t find a DLL, including the production of a warning message.
Creating Import Libraries
There are three kinds of import libraries:
A complete import library may represent a single DLL, providing the linker all the same
information at link time as if the DLL itself were present.
An incomplete import library similarly represents a DLL but with only some of the
information that the linker needs at link time.
A special import library with the DLL name “__IMPLICIT_LIB__” represents the entire
set of implicit libraries.
The linker can create an import library at the same time that it is creating the
corresponding DLL, and it can also create an import library from one or more DLLs that
already exist.
Whenever an import library is created, by default, it is a complete import library. If the
-set incomplete on option is provided then the import library is incomplete. This
doesn’t necessarily change what is in the import library; it just marks it incomplete to
indicate that the symbolic addresses within it are not to be considered reliable. The
import library that represents the implicit libraries must always be complete (so it is an
error to specify -set incomplete on in that case).
In all cases, the linker creates the import library file by following the same rules as
given earlier in The Creation of Output Object Files
on page 2-5, except that the name
of the work file is ZLDAInnn rather than ZLDAFnnn, the name of the intermediate file, if
desired, is specified by the -temp_i option rather than the -temp_o option, and










