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

Output Listings and Error Handling
eld Manual—527255-009
6-120
Error Messages
Cause. You gave the -set user_buffers option more than once on the command
line, with different attribute values. (The possible values are “on” and “off”.) You can
give the option more than once, but only if you specify the same value each time.
Effect. Fatal error (eld immediately stops without creating an output file).
Recovery. If you want to specify this option, decide which value you want to specify,
and only specify that value.
Cause. You are building a program or a DLL, so there is a code segment and a data
segment. eld has chosen addresses where each of the segments begins, perhaps
based on options that you gave, and eld has determined how large each of the
sections is. One of the sections has a starting address below 0x80000000 and a size
large enough so that it extends beyond 0x80000000. That is an error, because
segments with such addresses are not supported by the operating system.
Effect. Fatal error (eld immediately stops without creating an output file).
Recovery. If the problem occurred because you specified a value for the -t or -d
option that was close to 0x80000000, don’t do that. By default, eld will start a DLL at
0x78000000, which gives 256 megabytes for its code and data before reaching the
0x80000000 boundary. If you file is really larger than that, it probably is too large for
the operating system to handle in any case. Splitting it into multiple DLLs may also not
help, if they all need to be in memory at the same time. You probably must find some
way to make your code or data smaller.
Cause. One of the attributes that can be given to a procedure is the
kernel_callable attribute, but this is a special attribute that is only supposed to be
used by procedures in the millicode DLL that is part of system library. In particular, the
use of this attribute can only work if the same DLL also contains a symbol named
$n_MillicodeCheckRV, which the millicode DLL is supposed to contain. However, you
have asked eld to build a DLL that contains kernel_callable procedures but
does not contain $n_MIllicodeCheckRV.
Effect. Fatal error (eld immediately stops without creating an output file).
Recovery. This is a problem with building the operating system, which is beyond the
scope of this manual.
1629 Different values specified with multiple -set
user_buffers options.
1630 Addresses go beyond 0x80000000; the segment that starts
at <number> has size <number>, so it goes up to <number>.
1631 This loadfile has kernel-callable procedures but
$n_MillicodeCheckRV is not present.










