Port-vax archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Libm core dump with SIGILL
> On Aug 21, 2015, at 9:29 AM, Greg Stark <stark%mit.edu@localhost> wrote:
>
> On Fri, Aug 21, 2015 at 2:24 PM, Johnny Billquist <bqt%update.uu.se@localhost> wrote:
>>>
>>> SIGILL is a compiler bug (if the implementation of exp() is in C) or a
>>> programmer error (if it's in assembler).
>>
>>
>> We should check this. There is trickery going on with VAX FP, in order to
>> somewhat achieve some of the similar properties of IEEE FP. I know that have
>> bitten me in the past, and it might even be needed to check in gcc itself,
>> as the actual libraries might not even be invoked.
>
>
> Sorry, I should have included the versions of things
>
> This is on a freshly installed NetBSD 6.1.5 on simh from a recently
> checked out git tree:
>
> simh# uname -a
> NetBSD simh 6.1.5 NetBSD 6.1.5 (GENERIC) vax
>
> simh# gcc --version
> gcc (GCC) 4.1.3 20080704 prerelease (NetBSD nb3 20111107)
>
> $ ./vax -h
> MicroVAX 3900 simulator V4.0-0 Beta git commit id: f3af74e4
>
> The backtrace is actually a bit deeper than just exp()
>
> #0 0x7f7b6984 in infnan (34) from /usr/lib/libm.so.0
> #1 0x7f7b6810 in scalb (16512, 1179648, 17406, 0) from /usr/lib/libm.so.0
> #2 0x7f7b66df in exp (255017904, 735823842) from /usr/lib/libm.so.0
Ok. It's intentional, but I would call this a design error. Look at libm/arch/vax/n_infnan.S, it ends in an explicit "reserved operand" error. Why anyone would do that rather than generating the exception intended for this purpose (floating point error) is unclear.
paul
Home |
Main Index |
Thread Index |
Old Index