[RFC] MIPS division by zero and libgcj...

Andrew Haley aph@redhat.com
Thu Jun 10 19:59:00 GMT 2004


David Daney writes:
 > Andrew Haley wrote:
 > 
 > MIPS div instructions never trap. However I think that GCC always emits 
 > things like this when it cannot determine that the divisor is non zero:
 > 
 > div 0,ドル17,ドル16ドル
 > bne 16,ドル0,1ドルf
 > nop
 > break 7
 > 1:
 > 
 > 
 > >No, there's no reason not to do it. You'll have to write some hairy
 > >code to satisfy all the rules, though.
 > >
 > What are the rules? Are they more complicated then throw an 
 > ArithmeticException when the divisor is zero?
Yes. You also have to do
 if (dividend == (jint) 0x80000000L && divisor == -1)
 return dividend;
 
and not throw an exception.
 > > > Q3: Will using SIGTRAP in this manner make debugging programs that 
 > > > divide things by zero very difficult to debug under gdb?
 > >
 > >No.
 > > 
 > >
 > I have not tried it. But I think gdb uses "break" and SIGTRAP for 
 > breakpoints. Is it possible to get gdb to pass the signal to the 
 > debugee, so that it could be handled by the runtime support?
Well, gcj will generate either break or trap instructions. You can
tell gdb to ignore either.
Andrew.


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /