Xref: utzoo comp.unix.i386:2281 comp.unix.xenix:9418 Path: utzoo!utgpu!jarvis.csri.toronto.edu!cs.utexas.edu!uunet!mcsun!hp4nl!ctisbv!pim From: pim@cti-software.nl (Pim Zandbergen) Newsgroups: comp.unix.i386,comp.unix.xenix Subject: Floating point emulator bug? Keywords: 80387 Message-ID: <1670@ctisbv.cti-software.nl> Date: 11 Jan 90 16:17:46 GMT Followup-To: comp.unix.i386 Organization: CTI Software BV, The Hague, the Netherlands Lines: 33 Consider the following program: main() { double a = 2147483648.0; unsigned long b; b = (unsigned long) a; /* core dump here */ printf("b = %lu\n", b); } Looks quite legal to me, but it will core dump with a floating point exception when compiled for Unix 386 and Xenix 386 I have used gcc 1.36, ISC's pcc, and SCO Xenix 2.2.3 compilers. I have run the programs on ISC 386/ix 2.0.1 and SCO Xenix 386 2.3.1. The only working program was produced by the Xenix 286 compiler. It will also work on an AT&T 3B2 (with a Math Acceleration Unit) I suspect it is a bug in the floating point emulator. Maybe the 286 emulator does its own floating point emulation. I do not have a 80387 around to see if this will help. If some kind soul would want to run this program on either ISC or SCO with a 80387 and mail me the result, I'd be grateful eternally. Be warned, one volunteer with SCO Xenix 2.3.2 had his compiler crashed. -- Pim Zandbergen domain : pim@cti-software.nl CTI Software BV uucp : uunet!mcsun!hp4nl!ctisbv!pim Laan Copes van Cattenburch 70 phone : +31 70 3542302 2585 GD The Hague, The Netherlands fax : +31 70 3512837