eld Manual

Table Of Contents
Binding of References
eld Manual527255-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