Binding of References
eld Manual—527255-009
3-16
Merging Symbols Found in Input Linkfiles
.liblist section for such a DLL. With regard to the
-optional_lib
option, this option
ever causes such an entry to be removed from the .liblist. The point is that such an
entry is only significant if a different user library were to be used at runtime, and
eld
does not try to analyze whether this .liblist entry would be "necessary" if a different
user library had been present.
The main intended use of these options is for
-optional_lib
to be placed before
the set of DLL names that a compiler may automatically place at the end of the
command stream that it sends to the linker, for a set of DLL's that it thinks the user
might generally need. Such DLL's would often be unnecessary, depending on which
language features the program used. Since these DLL's are at the end of the
command stream, they would come after all other DLL's in resolving references,
except for the implicit DLL's. Therefore, this use of
-optional_lib
would have no
runtime consequences, unless the user wanted to be able to get a different version of
one of these libraries at runtime, with additional symbols in it that hid symbols
otherwise found in the implicit libraries.
Note that this is not necessarily the most general way to define "unnecessary", nor is
there necessarily any one best way to do it. For example, suppose that DLL's A and B
both point at C, and C is used to resolve references, but neither A nor B themselves
resolve any references. You could argue that either A or B could be considered
unnecessary on its own, but you can't say that they are both unnecessary at the same
time without figuring out how you are going to get to C. The definition of "unnecessary"
given in this section can be applied separately to each DLL in the command stream,
without having to take into account such dependencies. As it actually would work in
this case, the linker could only ignore A or B if it was not the one that led to putting C
into the search list. For instance, suppose A came before B in the .liblist section of the
program, so that A caused C to be in the search list. Then, the linker would ignore B if
the user marked B optional, but there would be no way to tell the linker to ignore A (i.e.,
without changing other things in the linker's command stream, such as the ordering of
A and B ).
Merging Symbols Found in Input Linkfiles
TNS/E linkfiles contain ELF symbol tables. The linker merges the symbol information
from the input files into its output file, creating an ELF symbol table if the output file is a
linkfile, or creating the
.dynsym
and
.dynsym.gblzd
sections if the output file is a
loadfile.
In loadfiles, globalized symbols are placed into the
.dynsym.gblzd
section, while all
other symbols are placed into the
.dynsym
section.
If the
-make_implicit_lib
option is given then
eld
reports an error if you have any
globalized symbols. Also, if the
-instance_data
option is specified with a
parameter value of
data2protected
or
data2hidden
then
eld
reports an error if
you have any globalized symbols.
Note.
The
data2protected
parameter is supported on systems running J06.09 or
earlier J-series RVUs and H06.20 or earlier H-series RVUs.
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 ...