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
Summary of Contents for eld
Page 4: ......
Page 8: ...Contents eld Manual 527255 009 iv ...
Page 12: ...What s New in This Manual eld Manual 527255 009 viii Changes to the 527255 005 Manual ...
Page 34: ...Introduction to eld eld Manual 527255 009 1 14 Example of Use ...
Page 54: ...eld Input and Output eld Manual 527255 009 2 20 Using Archives ...
Page 98: ...Other eld Processing eld Manual 527255 009 4 20 Merging Source RTDUs ...
Page 242: ...Output Listings and Error Handling eld Manual 527255 009 6 132 Glossary of Errors ...