eld Manual

Table Of Contents
eld Input and Output
eld Manual527255-009
2-18
Using Archives
The linker does not make use of any environment variables other than COMP_ROOT.
When eld is creating a new object file X from a set of linkfiles, or processing a loadfile
X with the -alf option, it is desired that DLLs of the appropriate data model match the
data model of X. Therefore, if X is neutral then it is desired that all the DLL’s used are
neutral, and if X is not neutral then it is desired that all the DLL’s used are either neutral
or same as X. During a search, if a DLL that is not desired is encountered, the search
continues. If the search function later finds an archive or a DLL which is desired, the
previously found DLL that was not desired is ignored. If the search does not succeed,
the DLL found earlier is used, even though it is not desired. A warning is issued if a
DLL of the undesired model is used.
Finding Public DLLs
This section explains how the linker looks for a public DLL based on the file identifier.
(The file identifier may have been specified in a -l option in the command stream, or
may have been found in the liblist of some other DLL).
As described in Finding and Reading The Public DLL Registry (ZREG) File on
page 3-23, the linker may or may not have located the public DLL registry file. If the
linker did not locate the public DLL registry file, it does not look for public DLLs. (It
continues to look for this DLL in other ways). The rest of this section assumes that the
linker did locate the public DLL registry file.
The linker verifies whether the file identifier matches with one of the public DLL
filenames found in the public DLL registry. If there is no such match and the linker is
either creating a 64-bit object file or the -alf option processes a 64-bit loadfile. The
linker verifies whether the name added with prefix “y” and suffix “DLL”, matches one of
the public DLL filenames found in the public registry. Later, the linker verifies whether
the name added with prefix “z” and suffix “DLL” matches the public DLL filenames
found in the public DLL registry.
If the linker does not find the file in the appropriate place as described above, or finds it
but cannot open it for reading, or if the file is not a DLL,
eld reports an error.
If the linker is creating a 64-bit object file or the -alf option is processing a 64-bit
loadfile, and if a file exists with the name lib instead of “y” prepended, and y.so
instead of “DLL” appended, then linker uses this file. If a file exists, with the name
lib instead of “z” prepended and .so instead of “DLL” appended, then linker uses
this file. The linker considers it an error only if these files do not exist, or are not DLLs.
In other words, as a result of the special cases described above, it is possible to put a
copy of the real zreg file into a location on the PC or OSS so that it lists the public
DLLs with names like zcredll or ycredll, etc., but in the same location. Instead of
having files named zcredll or ycredll, etc., you can rename them as:
libcre.so, or libcrey.so, and so on. eld does not consider it as an error when
Note. All of these matches are case insensitive.
Note. There is also an exception which applies to platforms other than Guardian.