delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp-workers/2000/05/02/11:43:33

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 <eliz AT is DOT elta DOT co DOT il>
From: Pierre Muller <muller AT cerbere DOT u-strasbg DOT fr>
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
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

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019