nld Manual

nld Utility
nld Manual528272-001
2-24
Run-Time Consistency Checking
Run-Time Consistency Checking
If a program tries 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). To determine whether a processor can run IEEE
floating-point instructions, programs can call the PROCESSOR_GETINFOLIST_
procedure. For more information 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. Problems can occur if a function using one
floating-point format calls a function using the other format, as shown in Table 2-5 on
page 2-24. Checks are performed at process creation to ensure that the user library (if
there is one) has a floattype compatible with that of the program file. If not, the
program is not allowed to run.
If the floattype attribute of the program file is IEEE and the floattype attribute of
the user library file is Neutral, the program is allowed to run, and the C/C++ run-time
libraries operate in IEEE mode.
Even if the user library is marked with a floattype attribute that conflicts with the
program file, the program can use the library if the program does not call anything in
the user library that uses floating point. In this case, you must mark the program file
with the -set float_lib_overrule on command to disregard the floattype
attribute of the user library file. (See Overruling the Run-Time Consistency Check on
page 2-25.)
TNS/R Native User Libraries
If you are using a TNS/R native user library, the library file must use the same floating-
point format as the program, and the library must be marked accordingly. If the user
library does not use floating point at all, you can mark the library NEUTRAL_FLOAT
using the -set floattype or -change floattype option. Then the user library
can be used by any type of program.
Table 2-5. Incompatible Program File and User Library floattypes (TNS)
floattype in program file floattype in user library file
IEEE Tandem
Tandem IEEE
Neutral IEEE