From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robert Williams To: law@cygnus.com Cc: egcs list , goto@statabo.rim.or.jp Subject: Re: -O compiling mixed language code seg faults Date: Sun, 01 Feb 1998 19:45:00 -0000 Message-id: <34D54192.2E76420D@bob.usuf2.usuhs.mil> References: <27308.886383097@hurl.cygnus.com> X-SW-Source: 1998-02/msg00044.html Jeffrey A Law wrote: > In message < 34D5009C.412EAD18@bob.usuf2.usuhs.mil >you write: > > System: egcs-980122, axp/RedHat-5.0, 2.1.82 kernel > > > > A main Fortran program that calls a C language subroutine > > (via an archive library...C code calls assembler routine in same > > library) > > seg-faults when compiled with the -O option. > > It works fine when compiled with -g , or with -g -O2 (or O3). > > Working executables are produced with any -On link option. > > Looks like a bug. > Actually, from the description it could just as easily be a bug > in your code. You will need to debug it to find out for sure. The segmentation fault always occurs here, at "B( I, J ) = LOG(FLOAT(J)) " below. gdb (under ddd) reports that there is no "xlog" or "xlogfloat" symbol in the current context, and a gdb display of local variables does not contain "xlog" and "xlogfloat". "xfloat" does show up in gdb, and ddd. I've added the lines in lower case to help debugging because the debugger will not show these variables. The print statement does show values for these variables as expected. DO 40 J = 1, NCOLB DO 30 I = 1, NROWB xfloat=float(j) xlog=log(xfloat) xlogfloat=log(float(j)) * print *,'i=',i,' j=',j,' float(j)=', * & xfloat,' log(float(j))=', xlog, * & ' xlogfloat=',xlogfloat B( I, J ) = LOG(FLOAT(J)) 30 CONTINUE 40 CONTINUE This Fortran code is stable and has been working well for many years under other compilers. B is dimensioned 2000x2000, but the seg-fault occurs long before those limits are reached, at j=1 and i=1 during the second execution of this block( i and j have already iterated 1-500 and are now going 1-1000. That's all I can do for now. -- Bob Williams, http://bob.usuf2.usuhs.mil/