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-9
Using a DLL Registry
It is possible to use the DLL registry with a DLL that has two data segments, or that
has a gateway. In such cases, when this discussion of the DLL registry refers to the
“data segment”, it means a fictitious segment that is the concatenation of the data
constant segment, data variable segment, and/or gateway segment (whichever of
these segments exist). The “(unrounded) size” of this fictitious segment includes any
space that gets added before the second or third of these segments in order to make
that segment start on a 64 KB boundary.
The -check_registry and -update_registry options attempt to open an
existing registry for reading. If they succeed in opening the file, they keep it open and
locked until they are through with the file. The time that the registry file would be open,
and therefore locked, would typically be a short time for the -check_registry
option, and a long time for the -update_registry option.
If the specified file exists but cannot be opened because it is currently in use (i.e., as
far as the operating system is concerned) or locked (by the linker’s locking
mechanism), the linker will pause for a brief time and try again. That could be helpful
when several links are being done in the same place, and the other links are using
-check_registry. If these opens don’t work after several attempts, eld reports an
error.
The registry is a text file. In a Guardian subvolume of OSS it must be a code 180 file.
Blank lines are treated as comments, as are lines whose first two non-blank characters
are hyphens. Each of the other lines of the registry must begin with one of the
keywords explained below, and the rest of the line provides the parameters for that
keyword. The keyword and parameters are separated by blanks or tab characters.
The keyword -dllarea, if used, must be the first keyword in the file. It takes two
numerical parameters whose format is the same as the format of a <hexadecimal
number> as described in The Linker Command Stream on page 1-5. The first
parameter tells the starting address for the placement of DLLs and the second
parameter tells the ending address. Whichever one of the two addresses is smaller
determines the lower bound for DLL addresses. The other one determines the upper
bound. The one called the starting address tells at which end of this region the linker
begins placing DLLs, so that the linker can either work upward from the bottom of the
region, or downward from the top of the region. The DLLs managed by this registry
must have addresses that fit within this range, meaning that the starting address of the
DLL must be at least as large as the lower bound and the starting address of the DLL
plus its reserved size (as explained below) must be no larger than the upper bound.
If the -dllarea keyword is not used, the default is the following:
-dllarea 0x80000000 0x70000000
In other words, by default, a DLL registry manages DLLs whose addresses lie between
0x70000000 and 0x80000000, and the linker lays out DLLs starting at the higher end.
Each of the remaining lines of the registry must have the keyword -range. Each such
line provides information about a DLL. The -range keyword has three parameters:
•
a string, to tell the name of the DLL










