Message-Id: <200005021646.SAA07021@cerbere.u-strasbg.fr> X-Sender: muller AT ics DOT u-strasbg DOT fr X-Mailer: QUALCOMM Windows Eudora Pro Version 4.0.2 Date: Tue, 02 May 2000 18:31:45 +0200 To: Eli Zaretskii From: Pierre Muller Subject: Re: interrupt 0x75 limitation in Win95 ? Cc: djgpp-workers AT delorie DOT com References: <200005020750 DOT JAA29985 AT cerbere DOT u-strasbg DOT fr> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Reply-To: djgpp-workers AT delorie DOT com At 14:28 02/05/00 +0300, Eli Zaretskii wrote: >> This Win95 limitation can be important for programs using C++ exceptions !! > >How are C++ exceptions related to this issue? I don't think they use the >FP exception or signals, do they? I don't know about C++ but in Delphi object pascal apparently the FPU exceptions are converted into software exception that can be handled like any other sofware exceptions and thus need to be able to support multiple time calls, which is the origin of this whole thread. >> There is probably a way to overcome this limitation but it requires to >> hook int 0x31 to catch the set_pm_interrupt for interrupt 0x75 and to >> redispatch the pseudo-exception according to the %cs in the exception >> address. > >I don't think I understand what you are suggesting. Which program should >hook Int 31h, and what should it do? For instance if you take GNU make Version 3.77 and run from it a program that raises such an exception then its make itself that crashes with a SIGFPE !! This is allright as long as you called program should never raise such an exception but if this is scheduled (like it is in one of my testing programs for the support of these FPU exceptions converted into software exceptions) then it becomes very bad because the test suite never reaches the end :( >As far as I understand, the problem here is that the program which >divides by zero doesn't even know about the FP exception, so it will >not be able to do anything about it. How will hooking Int 31h change >that? If "make" would hook the interrupt 0x31 and remember addresses of the child interrupt 0x75 handlers it could redirect the exception on the basis of the selector part of the exception address in the FPU (basically trying to rectify the wrong behavior of WinXX !) As I already stated, I don't know if this is easily usable. Pierre Muller Institut Charles Sadron 6,rue Boussingault F 67083 STRASBOURG CEDEX (France) mailto:muller AT ics DOT u-strasbg DOT fr Phone : (33)-3-88-41-40-07 Fax : (33)-3-88-41-40-99