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
Other eld Processing
eld Manual—527255-009
4-16
Processing of Floating Point Versions and Data
Models
Processing of Floating Point Versions and Data Models
When the linker builds a new linkfile or loadfile it performs consistency checks of
floating point versions. These checks use the floating point bits that are found in the
e_flags field of the ELF header.
The linker determines whether the input linkfiles are consistent, meaning that they do
not contain a mixture of both the tandem and ieee floating point types. If they are
consistent then the result type is determined to be whichever of tandem or ieee
occurred, or neutral if neither occurred.
If the -set floattype option is used, that determines the value that is placed into
the output linkfile or loadfile. The three values that can be specified with the -set
floattype option are ieee, neutral, and tandem, and they have the synonyms
ieee_float, neutral_float, and tandem_float, respectively. An informational
message is generated if the input files were not consistent, or if they were consistent
but with a result type different from what the option specified.
If a program is marked neutral, the HP NonStop operating system and CRE
consider that to mean the same thing as tandem. If the linker is creating a program
and -set_floattype neutral has been specified then the linker will put out a
warning message to say that floating point type neutral actually means tandem to
the HP NonStop operating system and CRE.
If the -set floattype option is not used, eld reports an error if the input files are
not consistent. If they are consistent, the result type is placed into the output file.
When the linker is building a loadfile, the -set float_lib_overrule option may
be used to turn on the EF_TANDEM_FLOAT_LIB_OVERRULE bit in the ELF header of
the loadfile. The linker allows this bit to be set in both programs and DLLs.
The linker performs additional floating point checks with regard to DLLs when it is
creating a new loadfile, as described in the following paragraphs. The same checks are
performed by the -alf option when they are updating an existing loadfile. These
checks result in warning messages, not errors, because different DLLs may be used at
runtime.
If the linker is building a program, or updating it with -alf, the intention is to be
consistent with the checks that the HP NonStop operating system will do. So, there is
no checking against DLLs if the linker has been told to turn on the
FLOAT_LIB_OVERRULE bit in the program. If this bit is not to be turned on then the
linker checks the program’s floating point type against all the DLLs that it has opened.
All DLLs must either be neutral or have the same floating point type as the one
indicated in the program. As mentioned above, if the program is marked neutral, the
linker considers that to mean tandem.
If the linker is building or updating a DLL then it checks that all the DLLs seen by the
linker, including the DLL that is being created or updated, do not contain a mixture of
both tandem and ieee.










