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

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.










