[comp.realtime] cc68k gnu crosscompiler SPARC/68k20 exits w signal 11

trygg@nososl.UUCP (Trygg A. Eliassen) (06/12/91)

I have just received vxWorks 5.0 with the GNU toolkit.  We are running
SPARC as host and MIZAR 68k20 targets.  I am compiling with the cc68k
compiler and compiling some files I get the following message from the compiler before it dies, no files are produced.


%ls -l geometry.c
%-rwxrwx---  1 1001        26096 May 30 14:36 geometry.c
%
%make geometry.o
%
%cc68k -O -c -g -traditional -fvolatile -DCPU=MC68020 -DVX -I../../../prog/ins 
-I../ins -I../../../prog/db/eff -I/local/vw/h -I../../../prog/db/ins geometry.c
cc68k: Program as got fatal signal 11.
*** Error code 1
make: Fatal error: Command failed for target `geometry.o'
%

Does anybody have an idea.

Thanks 
-- 
Trygg A. Eliassen BSc. Hons | trygg@nordic-offshore.no
Nordic Offshore Systems AS  | mcsun!nuug!nososl!trygg
Stabekk - Oslo - NORWAY     | Tlf +472 12 55 80  Fax +472 12 54 01

healy@cod.NOSC.MIL (Mike Healy) (06/13/91)

In article <92@nososl.UUCP> trygg@nososl.UUCP (Trygg A. Eliassen) writes:
>I have just received vxWorks 5.0 with the GNU toolkit.  We are running
>SPARC as host and MIZAR 68k20 targets.  I am compiling with the cc68k
>compiler and compiling some files I get the following message from the compiler before it dies, no files are produced.
> . . . (stuff deleted)
>cc68k: Program as got fatal signal 11.
>*** Error code 1
>make: Fatal error: Command failed for target `geometry.o'
>%
>--  ... (stuff deleted)
>Trygg A. Eliassen BSc. Hons | trygg@nordic-offshore.no
>Nordic Offshore Systems AS  | mcsun!nuug!nososl!trygg
>Stabekk - Oslo - NORWAY     | Tlf +472 12 55 80  Fax +472 12 54 01

I had the exact same problem, but only with one file. When this file was
compiled on a SPARCStation at our customer's site, it would get this
error numerous times before succeeding. Finally, after as many as 10 or
12 attempts, it would compile successfully. None of the other modules
(~ 100 files) had this problem. This never happened at our lab using
a Sun 3/60 and the same vxWorks/gcc (cc68k).  At first I thought that
maybe there was a bad spot on the disk where the file was located, but
in the course of development this file was moved to several different
disks and the problem didn't change.

My solution is that the system is installed and that particular module
no longer needs to be compiled 8^) , but if you find out what's going
on,  please email me or post.  I think the code is forcing the assembler
into a little-used (and not completely debugged) path.

Or you could try compiling it on an old Sun 3 8^)

BTW, our targets are FORCE CPU-30s running vxWorks. I am happy with
vxWorks. Some of our needs are not supported by Wind River (e.g. raw
ethernet datagram multicasting), but they have been very nice about
giving me the source so I could get the job done.

Mike Healy
ETA Technologies
healy@cod.nosc.mil

dat@noao.edu (D'Anne Thompson) (06/13/91)

We just encountered the same problem about 4 hours before the net message
arrived.  Our situation is this:

System was just moved from a Sun3/80 host using native SUN compiler, to
a Sparc SLC host using VxWorks GNU Toolkit.
We recompiled over 250 modules using cc68k before encountering this one.
Error message is "as exits with signal 11".  Core dump is 8,65x,xxx bytes.
Problem is with a single module.  All other modules (>300) compiled first
time and every time.

Using cc68k -S generates a good looking assembly output file that assembles
just fine using as68k. (Repeated sequences of cc68k -S and as68k worked
everytime).

In trying repeated attempts to use a normal cc68k -c sequence, it took 
12 tries before success.  Continued efforts had the same results, about
1 success in 12 tries.

Perhaps this helps.

D'Anne Thompson
National Optical Astronomy Observatories
P.O. Box 26732
Tucson, AZ 85726
(602) 325-9335
dat@noao.edu  {...}!uunet!noao.edu!dat
-- 
D'Anne Thompson
National Optical Astronomy Observatories
P.O. Box 26732
Tucson, AZ 85726

trygg@nososl.UUCP (Trygg A. Eliassen) (06/14/91)

In article <1991Jun13.165043.27505@noao.edu> dat@noao.edu (D'Anne Thompson) writes:

>Using cc68k -S generates a good looking assembly output file that assembles
>just fine using as68k. (Repeated sequences of cc68k -S and as68k worked
>everytime).
>
I will try to do it in 2 steps to see if that works,  I had a letter from 
Bradley White suggesting the stacksize limit in the C-shell.  I bumped it
up to max, but I had no luck.  It compiles now and then.

>In trying repeated attempts to use a normal cc68k -c sequence, it took 
>12 tries before success.  Continued efforts had the same results, about
>1 success in 12 tries.

Is the code generated OK ?



-- 
Trygg A. Eliassen BSc. Hons | trygg@nordic-offshore.no
Nordic Offshore Systems AS  | mcsun!nuug!nososl!trygg
Stabekk - Oslo - NORWAY     | Tlf +472 12 55 80  Fax +472 12 54 01

jclark@sdcc6.ucsd.edu (John Clark) (06/21/91)

In article <92@nososl.UUCP> trygg@nososl.UUCP (Trygg A. Eliassen) writes:
+I have just received vxWorks 5.0 with the GNU toolkit.  We are running
+SPARC as host and MIZAR 68k20 targets.  I am compiling with the cc68k
+
+
+%cc68k -O -c -g -traditional -fvolatile -DCPU=MC68020 -DVX -I../../../prog/ins 
+-I../ins -I../../../prog/db/eff -I/local/vw/h -I../../../prog/db/ins geometry.c
+cc68k: Program as got fatal signal 11.

Try using the '-v' option. This will print a 'blow-by-blow'
sub-program execution. The signal 11 could be from 'cc68k', 'cpp',
'cc1-68k', 'as68k'. I have seen such on some "gcc's" when only the
'first' compilation cycle has been done, as in the case of the cross
compiler. It seems to be in relation to memory and dynamic
allocation.  The system 'swap' could be minimal and as gcc allocates
more than some size, given other task allocations, it bombs.

If the particular program which gives the signal is identified, use
'adb' to get a '$c' call trace back. If the signal comes from an
'abort' then some 'internal' compiler error was detected and gcc is
'ungracefully' exiting. If the fault location is not in 'abort' then
some other obnoxious thing has happend. Call Wind River. Or if you
didn't pay for the 'support' post to 'gnu.gcc.bug'.

When gcc(cc68k) executes at least 3 tasks are 'active', 'gcc'
background, 'cc1' compiler, 'gas(as68k)' receiving  the output of
'cc1'. One fellow noted that the 'core' file was 8Meg or so. This
may be a maximum for his system configuration. Virtual memory works
only if there's disk space virtually available.
-- 

John Clark
jclark@ucsd.edu

dat@noao.edu (D'Anne Thompson) (06/22/91)

My problem module is no longer a problem, thanks to Mark Peek and 
Jwahar R. Bammi.  Mark sent me the notice from Jwahar that he had seen
some time ago.

The VxWorks gnu toolkit that we received, uses gas-1.34.  A co-worker
already had gas-1.38, so I applied the patches from jwahar and our
problem seems to be taken care of.

Here is Mark's note to me, along with Jwahar's patches.

>
>I had a similiar thing happen in about the same environment. Attached is
>a patch file with some bug fixes for gas. The one for expr.c seemed to do
>the trick. If this works, go ahead and repost the answer. I can only take
>credit for saving this article...
>
>Mark
>----
>
>Name:	Mark Peek
>Mail:	Imagen Division, QMS Inc.
>	 2650 San Tomas Expressway, P.O. Box 58101
>        Santa Clara, CA 95052-8101
>AT&T:	(408) 986-9400
>UUCP:	mark@imagen.com or ...{decwrl,sun}!imagen!mark



Here is Jwahar R Bammi's patches to gas-1.38...

===========================================================================
Article 113 of gnu.utils.bug:
Path: imagen!sun!newstop!sun-barr!apple!usc!zaphod.mps.ohio-state.edu!magnus.ircc.ohio-state.edu!tut.cis.ohio-state.edu!UUNET.UU.NET!cadence!bammi%acae127
From: cadence!bammi%acae127@UUNET.UU.NET (Jwahar R. Bammi)
Newsgroups: gnu.utils.bug
Subject: gas v1.38 bug + suggested fix
Message-ID: <BAMMI.91Feb8161638@acae127.cadence.com>
Date: 8 Feb 91 21:16:38 GMT
Sender: daemon@tut.cis.ohio-state.edu
Distribution: gnu
Organization: Cadence Design Systems
Lines: 162
Approved: bug-gnu-utils@prep.ai.mit.edu

here are some of my fixes for gas 1.38 (and any m68k host):

the problem was that AOFF mode was always generating 0 offsets, the following
example
#APP
.text
	movew	d1,a0@(two-one)
.lcomm one,2
.lcomm two,2

was being assembled as "movew d1,a0@(0)"

the diffs below incorporate the following:
 - diffs from kivinen@JOKER.HUT.FI (Tero Kivinen) fixing a6@(label)
   being assembled as PC relative rather than A6 relative.

 - diffs from ntmtv!thompson@AI.MIT.EDU (Mike Thompson) for "bkpt #0"

 - diff to expr.c:
	this requires a little explaination.
	the if condition at around line 530 in v1.38 reads

  if (expressionP -> X_subtract_symbol == expressionP -> X_add_symbol
      || (   expressionP->X_subtract_symbol->sy_frag==expressionP->X_add_symbol->sy_frag
          && expressionP->X_subtract_symbol->sy_value==expressionP->X_add_symbol->sy_value))

      several people have pointed out that this causes seg. faults
      and needs to be patched to

      if (expressionP -> X_subtract_symbol == expressionP -> X_add_symbol
          || (expressionP->X_subtract_symbol && expressionP->X_add_symbol
              && expressionP->X_subtract_symbol->sy_frag==expressionP->X_add_symbol->sy_frag
	      && expressionP->X_subtract_symbol->sy_value==expressionP->X_add_symbol->sy_value))

but doing so always produces zero for expressions such as ``a6@(two-one)''.
(see the #def of "isvar" in m68k.c and its usage for example in the
AOFF case at around line 1509 of m68k.c) , so the
correct condition seems to be just

      if (expressionP -> X_subtract_symbol == expressionP -> X_add_symbol)

(as it was in gas 1.34).

with the patches suggested below, it seems to do much better.

---
*** ../gas-1.38/expr.c	Fri Jan  4 13:13:00 1991
--- expr.c	Tue Feb  5 18:48:54 1991
***************
*** 527,535 ****
         * It is faster to re-cancel them to NULL
         * than to check for this special case.
         */
!       if (expressionP -> X_subtract_symbol == expressionP -> X_add_symbol
!           || (   expressionP->X_subtract_symbol->sy_frag==expressionP->X_add_symbol->sy_frag
! 	      && expressionP->X_subtract_symbol->sy_value==expressionP->X_add_symbol->sy_value))
  	{
  	  expressionP -> X_subtract_symbol	= NULL;
  	  expressionP -> X_add_symbol		= NULL;
--- 527,533 ----
         * It is faster to re-cancel them to NULL
         * than to check for this special case.
         */
!       if (expressionP -> X_subtract_symbol == expressionP -> X_add_symbol)
  	{
  	  expressionP -> X_subtract_symbol	= NULL;
  	  expressionP -> X_add_symbol		= NULL;
*** ../gas-1.38/m68k.c	Tue Dec  4 15:50:00 1990
--- m68k.c	Wed Feb  6 09:52:38 1991
***************
*** 1258,1265 ****
  					long t;
  
  					t=get_num(opP->con1,80);
! 					if(t<1 || t>8 || isvar(opP->con1))
! 						losing++;
  				}
  				break;
  
--- 1258,1271 ----
  					long t;
  
  					t=get_num(opP->con1,80);
! 					if (s[1]!='s') {
! 						if(t<1 || t>8 || isvar(opP->con1))
! 							losing++;
! 					}
! 					else {
! 						if(t<0 || t>7 || isvar(opP->con1))
! 							losing++;
! 					}
  				}
  				break;
  
***************
*** 1474,1480 ****
  				if(   !issword(nextword)
  				   || (   isvar(opP->con1)
  				       && (  (   opP->con1->e_siz==0
! 					      && flagseen['l']==0)
  					   || opP->con1->e_siz==3))) {
  
  					if(opP->reg==PC)
--- 1480,1486 ----
  				if(   !issword(nextword)
  				   || (   isvar(opP->con1)
  				       && (  (   opP->con1->e_siz==0
! 					      && flagseen['l']!=0)
  					   || opP->con1->e_siz==3))) {
  
  					if(opP->reg==PC)
***************
*** 1489,1495 ****
  							break;
  						} else {
  							addword(0x0170);
! 							add_fix('l',opP->con1,1);
  						}
  					} else
  						addword(0x0170);
--- 1495,1501 ----
  							break;
  						} else {
  							addword(0x0170);
! 							add_fix('l',opP->con1,0);
  						}
  					} else
  						addword(0x0170);
***************
*** 1976,1984 ****
  			break;
  
  		case 'Q':
! 			tmpreg=get_num(opP->con1,10);
! 			if(tmpreg==8)
! 				tmpreg=0;
  			install_operand(s[1],tmpreg);
  			break;
  
--- 1982,1997 ----
  			break;
  
  		case 'Q':
! 			if (s[1]!='s') {
! 				tmpreg=get_num(opP->con1,10);
! 			  	if(tmpreg==8)
! 					tmpreg=0;
! 			}
! 			else {
! 				tmpreg=get_num(opP->con1,20);
! 			  	if(tmpreg==8)
! 					tmpreg=0;
! 			}
  			install_operand(s[1],tmpreg);
  			break;
  
cheers,
--
bang:   uunet!cadence!bammi			jwahar r. bammi
domain: bammi@cadence.com
GEnie:	J.Bammi
CIS:    71515,155

-- 
D'Anne Thompson
National Optical Astronomy Observatories
P.O. Box 26732
Tucson, AZ 85726