eld Manual

Table Of Contents
Output Listings and Error Handling
eld Manual527255-009
6-111
Error Messages
Cause. As part of the rules for the TNS/E software architecture, there is a restriction
on the types of object files that can be given to the linker. An exact statement of the
restriction is hard to give, but here is the general idea. The code within an object file
can be divided into multiple “sections”. You will probably run into the limitation if any
one of these code sections is close to 16 megabytes in size. Our compilers know to
divide the code into multiple code sections so that no single code section gets too
large. But, as the message indicates, one of the files did have a code section that was
larger than 16 megabytes. eld doesn’t wait to see if this would actually run into the
restriction, but just relies on the heuristic that a code section this large is bad.
Effect. Fatal error (eld immediately stops without creating an output file).
Recovery. This might indicate a compiler problem, because we shouldn’t create this
type of object file in a compilation. If the compiler always creates one code section,
with the same name every time, then splitting your source into multiple compilations
may not help much, because if all the compilations have code sections of the same
name then you won’t be able to put them through eld with the -r option, to create a
new object file that could be used as eld input again, because eld will refuse to
combine these object files into a new object file that would end up with a code section
of that same name that was too big. You could split your code up into separate
compilations and then give them all to eld without the -r option, to directly build a
program or DLL out of them, because there is no restriction on the final program or
DLL having a code section of any size. But you probably want to report this to HP, so
that the reason this came up can be analyzed.
Cause. As part of the rules for the TNS/E software architecture, there is a restriction
on the types of object files that can be given to the linker. An exact statement of the
restriction is hard to give, but here is the general idea. The code within an object file
can be divided into multiple “sections”. You will probably run into the limitation if any
one of these code sections is close to 16 megabytes in size. You used the
-r option of
eld to tell it to create a new object file that can be used as linker input again, so the
limitation applies to this output file. eld will combine code sections that have the same
name in its input files into a single code section of the same name in the output file.
Our compilers know to divide the code into multiple code sections so that no single
code section gets too large, even when later combined by eld for the -r option. But,
as the message indicates, one of the code sections would come out larger than 16
megabytes in the eld output file. So, to avoid possible future problems in using this
file, eld refuses to create it.
Effect. Fatal error (eld immediately stops without creating an output file).
Recovery. This might indicate a compiler problem, because we shouldn’t create code
sections in a way that leads to this problem. You could avoid using the
-r option, and
1604 The -r option cannot be used for this link because the
output code section named <section name> would come out
larger than 16 megabytes. An alternative is to put your
object files into an archive, say 'x.a', and then build your
program or DLL by saying '-all x.a' on the eld command line.