Xref: news2.mv.net comp.os.msdos.djgpp:3401 From: richard DOT young AT crc DOT doc DOT ca (Richard Young) Newsgroups: comp.os.msdos.djgpp Subject: libm.a/linker *BUG* with test program Date: 2 May 1996 20:59:55 GMT Organization: Communications Research Centre Lines: 74 Message-ID: <4mb7ob$3lf@crc-news.doc.ca> NNTP-Posting-Host: yaker.vpcs.doc.ca Mime-Version: 1.0 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp I've discovered the following incorrect behavior with DJGPP version 2. The included test program illustrates the symptom of the behavior which seems to be as a result of including the math library. When I don't include libm.a the program does not crash. When I include libm.a the program crashes on the 3rd pow() call. It seems that it also is related to calling ldexp() too since just calling pow() many times works fine. Furthermore, when I run another program (gcc, symify etc.) immediately after running the crashing test program then the other program bombs with a SIGFPE exit as well. Invoking the other program once more returns it to correct operation. My execution platform is Windows 95 on a Pentium with 80 MB RAM. I can't use V2 until this issue is resolved. Thanks in advance. Richard Young Communications Research Centre, Ottawa, Canada richard DOT young AT crc DOT doc DOT ca ----------------------------------------------------------- // The test program. #include #include int main() { double m; m = ldexp(1.0,6); printf("y=%f\n",pow(10.0,4.0)); m = ldexp(1.0,6); printf("y=%f\n",pow(10.0,4.0)); m = ldexp(1.0,6); printf("y=%f\n",pow(10.0,4.0)); } ----------------------------------------------------------- compiled with gcc -o test test.cpp -lm generates the following output y=10000.000000 y=10000.000000 Exiting due to signal SIGFPE Floating Point exception at eip=00001e47 eax=40060000 ebx=00000001 ecx=0000a2b8 edx=00040000 esi=00000003 edi=0000d8c0 ebp=0004d858 esp=0004d7cc cs=00a7 ds=00af es=00af fs=0087 gs=00c7 ss=00af Call frame traceback EIPs: 0x00001e47 0x000016af 0x000015f0 0x00003c4f ----------------------------------------------------------- compiled with gcc -o test test.cpp generates the following output y=10000.000000 y=10000.000000 y=10000.000000