C/C++ Programmer's Guide (G06.27+, H06.08+, J06.03+)

Table 44 Floating-Point State as Determined by TNS/R Native Linker floattype Attribute
(continued)
-set Neutral-set IEEE-set TandemNeutralIEEETandem
file is NEUTRAL_
FLOAT.
the output object
file is IEEE_FLOAT.
the output object
file is TANDEM_
FLOAT.
Warning message
is generated and
No message is
generated and the
Warning
message is
0 or more1 or more0
the output objectoutput object file is
IEEE_FLOAT.
generated and
output object file file is NEUTRAL_
FLOAT.
is TANDEM_
FLOAT.
Warning message
is generated and
Warning message
is generated and
Warning
message is
0 or more1 or more1 or more
the output objectthe output objectgenerated and
file is NEUTRAL_
FLOAT.
file is
IEEE_FLOAT.
output object file
is TANDEM_
FLOAT.
No message is
generated and the
Warning message
is generated and
Warning
message is
1 or more00
output object file isthe output objectgenerated and
NEUTRAL_
FLOAT.
file is
IEEE_FLOAT.
output object file
is TANDEM_
FLOAT.
Run-Time Consistency Checking
If you attempt to use a processor that does not support IEEE floating-point format, process creation
error code 64 occurs (IEEE floating-point support not available on this
processor). Programs can call the PROCESSOR_GETINFOLIST_ procedure to determine whether
a processor can run IEEE floating-point instructions. For more details about this procedure, see the
Guardian Procedure Calls Reference Manual.
Run-time consistency checking includes a check for floattype consistency between the program
file and the user library file, if one is used. IEEE and Tandem floating-point formats use different
data formats and calling conventions: IEEE floating-point values are typically passed in IEEE
floating-point registers; while Tandem floating-point values are passed in general purpose registers.
Therefore, problems can occur if a function using one floating-point format calls a function using
the other format. Checks are performed at process creation to ensure that the user library (if there
is one) is marked with a floattype consistent with the program file.
These combinations are considered to be conflicting and are not allowed to begin to run:
floattype in user library filefloattype in program file
TandemIEEE
IEEETandem
IEEENeutral
The case in which the floattype attribute of the program file is IEEE and the user library file is
Neutral is not considered a conflict. In this case, the program is allowed to execute, and the C/C++
run-time libraries operate in IEEE mode.
If you are using a native user library, the library file should use the same floating-point format as
the program, and the library should be marked accordingly. If the user library doesn’t use floating
point at all, you can mark the library NEUTRAL_FLOAT using the nld or ld -set floattype
or -change floattype command. Then the user library can be used by any type of program.
290 Compiling and Linking TNS/R Native C and C++ Programs