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

eld Input and Output
eld Manual—527255-009
2-15
Input Object Files
However, to simplify build processes, the user may find it convenient for these names
to be the same.
The .liblist section does not contain an entry corresponding to the user library, does not
contain an entry for the import library that represents the implicit libraries, and does not
contain entries for DLLs that the linker finds indirectly.
When the search to satisfy a -l option does not succeed, and this is not an error
(because the -allow_missing_libs option was specified and the mode is not -b
static), the .liblist section will still contain an entry for that -l option. In other words,
it is assumed that the name was intended to be a DLL as opposed to an archive.
Because the linker doesn’t have a DLL name to put into the .liblist section entry, it
instead will put in the string that was the parameter to the -l option. The linker also
sets the LL_NOT_FOUND bit in the .liblist section entry to identify this as an entry for a
-l option for which the search did not succeed.
Each .liblist section entry tells if it is reexported. The -reexport and -no_reexport
options form a two-way switch, selecting one of two modes for the linker at a given
point in the command stream. These options can be specified multiple times in the
command stream, each time setting the mode for subsequent items in the command
stream until the mode is changed again. When -reexport is in effect, the .liblist
section entry for a DLL found in the command stream says that it is re-exported. When
-no_reexport is in effect it is not re-exported. At the beginning of the command
stream the mode is -no_reexport. eld reports an error if you use either of these
options when not building a DLL.
The following rules apply to situations where the same file is found several times in the
command stream:
•
It is not explicitly called out as an error if the same linkfile is specified more
than once in the command stream, but it may lead to the error of multiply
defined symbols, as explained later in Accepting Multiply-Defined Symbols on
page 3-17.
•
It can be useful to specify the same archive more than once in the command
stream, as explained later in Using Archives
on page 2-16.
•
With regard to DLLs, a requirement is that the same DLL name cannot be
present more than once in the .liblist section. The rule is that, if the linker finds
the same DLL more than once in the command stream, where “same” means
that they have the same DLL name, the linker ignores all the instances after
the first one. However, the linker also checks whether the DLL was found with
the same export digest each time. If not, a warning message is provided.
•
When a user library is used by the linker, it is treated like an additional DLL at
the beginning of the command stream. However, if the DLL name within the
user library matches the name of another DLL found later, that other DLL is still
used, and gets a .liblist entry 7 , although the linker puts out a warning
message about this.










