Operating System - OpenVMS
1753320 Members
6784 Online
108792 Solutions
New Discussion юеВ

Re: %SYSTEM-I-FPMODECTL, floating-point control settings (TRAP_ENABLE_INV+TRAP_ENAB)

 
SOLVED
Go to solution
Shael Richmond
Frequent Advisor

%SYSTEM-I-FPMODECTL, floating-point control settings (TRAP_ENABLE_INV+TRAP_ENAB)

I am getting the above message running our application on Itanium AXP 8.3. We are testing our application on Itanium.

While I understand it's just an informational message, we had not seen it on the Alpha.

HP's offshore support wasn't particularly helpful, explaining to me in detail the -I- means informational and don't worry about it!
They did tell me how to turn it off but I wasn't sure I wanted to do that.

I found one link that said it could be a mismatch of /float options on the compiler.
9 REPLIES 9
Robert Brooks_1
Honored Contributor

Re: %SYSTEM-I-FPMODECTL, floating-point control settings (TRAP_ENABLE_INV+TRAP_ENAB)

If you feel the response to a question was not complete, you should push for escalation to someone more knowledgeable. The suggestion to
simply ignore it is pretty poor, without a good
reason *why* it may be OK not to worry about it.

-- Rob (an HP employee)
John Gillings
Honored Contributor

Re: %SYSTEM-I-FPMODECTL, floating-point control settings (TRAP_ENABLE_INV+TRAP_ENAB)

Shael,

Can you give a bit more information about exactly when and how you're getting this message? Is it linking or running, and, if running, at what stage of execution?

Have you compiled with explicit /FLOAT options? If so, are all modules compiled the same?

and, what Robert suggested... if you're not satisfied with the response from HP customer support, don't let them close the case! Have it elevated to someone who can give you a satisfactory answer.

A crucible of informative mistakes
Shael Richmond
Frequent Advisor

Re: %SYSTEM-I-FPMODECTL, floating-point control settings (TRAP_ENABLE_INV+TRAP_ENAB)

It is happening during the execution of the program.

All our modules are compiled with /float=g_float. We can't go to IEEE because of DECForms and Codasyl DBMS.

One of our other groups provides us with a library of tools and they did use the /float=ieee. We are adding code to handle anytime a floating point number is passed. The tools are in C++.

So is all the warning telling me is that modules were compiled with different /float options?

I guess I will have to add a set message command in our menu to prevent those messages from being shown to the end users.
John Gillings
Honored Contributor

Re: %SYSTEM-I-FPMODECTL, floating-point control settings (TRAP_ENABLE_INV+TRAP_ENAB)

Shael,

> during the execution of the program.

Is that before or after you've entered the main routine? I could imagine something like this from the image activator (ie: not from your program), but it would be very odd for it to happen while your code was running (though perhaps it's a signal from LIB$FIND_IMAGE_SYMBOL?)

The text about "TRAP_" suggests it's not the floating point type, but the control mode that's at issue.

Check out the LINK qualifier /FP_MODE. I suspect the message is informing you what modes have been chosen by the image activator because it wasn't clear from the image. Perhaps linking with an explicit /FP_MODE help?
A crucible of informative mistakes
John Reagan
Respected Contributor
Solution

Re: %SYSTEM-I-FPMODECTL, floating-point control settings (TRAP_ENABLE_INV+TRAP_ENAB)

Are you using /CHECK on some of your C modules? /CHECK defaults to /CHECK=ALL. One of the new checks on Itanium is FP_MODE. You probably picked that up "by accident". That is where the message comes from. Just curious, how did they tell you to turn it off?

As background, on Alpha, various IEEE modes are encoded on a by-instruction basis. You can easily have an application where one module is compiled VAX float, another comipled /FLOAT=IEEE/IEEE=FAST, and still another /FLOAT=IEEE/IEEE=DENORMS.

However, on I64, the various floating point trap settings are encoded in single FPSR (floating point status register). The compiler records the "preferred" floating settings in the .OBJ file. The linker uses the settings from the module with the main routine (can be overriden with the linker /FP_MODE qualifier). If you have code that needs different settings during its operation, you'll now have to call the SYS$IEEE_SET_FP_CONTROL system service to save the old settings, establish new ones, do your operations, and put the old one back.

John
John Reagan
Respected Contributor

Re: %SYSTEM-I-FPMODECTL, floating-point control settings (TRAP_ENABLE_INV+TRAP_ENAB)

Note that /CHECK=FP_MODE is an expensive check to make. I'd ask the tools folks to review their /CHECK settings.
Shael Richmond
Frequent Advisor

Re: %SYSTEM-I-FPMODECTL, floating-point control settings (TRAP_ENABLE_INV+TRAP_ENAB)

What should we change the /check to?

For the most part they use:
cxx/NOMEMBER_ALIGNMENT

But they did find a /check=all.


HP told me to do a set message to stop the warning from bothering the users.
Shael Richmond
Frequent Advisor

Re: %SYSTEM-I-FPMODECTL, floating-point control settings (TRAP_ENABLE_INV+TRAP_ENAB)

They removed the /check=all and that fixed the problem.

Thanks everyone.
John Reagan
Respected Contributor

Re: %SYSTEM-I-FPMODECTL, floating-point control settings (TRAP_ENABLE_INV+TRAP_ENAB)

Do a SET MESSAGE to just suppress the message output? Sigh...