Return to BSD News archive
Path: sserve!newshost.anu.edu.au!munnari.oz.au!spool.mu.edu!darwin.sura.net!gatech!howland.reston.ans.net!noc.near.net!uunet!pipex!marble.uknet.ac.uk!uknet!cf-cm!paul From: paul@isl.cf.ac.uk (Paul) Newsgroups: comp.os.386bsd.bugs Subject: Gcc 2.3.3 bug ? Message-ID: <1993Apr6.154454.22346@cm.cf.ac.uk> Date: 6 Apr 93 15:44:51 GMT Sender: news@cm.cf.ac.uk (Network News System) Organization: /usr/local/lib/rn/organisation Lines: 50 I was trying to port someone elses program to 386bsd but I kept getting seg. violations which I finally tracked down to an array declaration. After a little playing around I narrowed the problem down to the following test program. main() { long int Domain_Class[253][229][2]; } Can't be simpler really :-) The disass of this is as follows: 0x71 in main () (breaks.c line 2) 2 (breaks.c) (gdb) disass Dump of assembler code from 0x68 to 0x78: 0x68 <main>: pushl %ebp 0x69 <main+1>: movl %esp,%ebp 0x6b <main+3>: subl $0x71288,%esp 0x71 <main+9>: call 0xf8 0x76 <main+14>: leave 0x77 <main+15>: ret End of assembler dump. Now by changing the second array dim to 228, the seg trap dissappears and the disass is Bpt 1, main () (works.c line 5) 5 } (gdb) disass Dump of assembler code from 0x68 to 0x78: 0x68 <main>: pushl %ebp 0x69 <main+1>: movl %esp,%ebp 0x6b <main+3>: subl $0x70aa0,%esp 0x71 <main+9>: call 0xf8 0x76 <main+14>: leave 0x77 <main+15>: ret End of assembler dump. I tried this with gcc-2.3.2 on a sparc and the problem never arose. I'll start looking into it but does anyone have any ideas, seems like it's probably a generic i386 problem with gcc-2.3.3. -- Paul Richards, University of Wales, College Cardiff Internet: paul@isl.cf.ac.uk