[gnu.gcc.bug] gcc 1.34 core dumps while cross-compiling gas

mason@tessi.UUCP (Mark Mason) (05/02/89)

I have set up gcc to cross-compile for the 32000 (running on a sun 3, os4.0).

Files:

	config.h	-> xm-sunos4.h
	md		-> ns32k.md
	tm.h		-> tm-sequent.h
	aux-output.c	-> output-ns32k.c

The file hash.c which the compiler died on is a cut-down version of
hash.c from gas (I have included it below). The compiler seemes to have
died in the function hash_say (from the time I left -quiet off by hand).

Thanks,
tektronix!tessi!mason

tessi:~ % gcc32 hash.c
gcc32: Program cc1 got fatal signal 6.
tessi:~ % gdb /usr/local/gnu/lib/gcc32-cc1 core
GDB 3.0, Copyright (C) 1988 Free Software Foundation, Inc.
There is ABSOLUTELY NO WARRANTY for GDB; type "info warranty" for details.
GDB is free software and you are welcome to distribute copies of it
 under certain conditions; type "info copying" to see the conditions.
 Reading symbol data from /usr/local/gnu/lib/gcc32-cc1...done.
 Core file is from "gcc32-cc1".
 Program terminated with signal 6, Abort.
 Type "help" for a list of commands.
 (gdb) where
  #0  0x8002c in kill ()
  #1  0x79d6a in abort ()
  #2  0x68554 in final (first=(rtx) 0xba3a0, file=(struct _iobuf *) 0xb0810, write_symbols=NO_DEBUG, optimize=0, prescan=0) (final.c line 909)
  #3  0x13568 in rest_of_compilation (decl=(tree) 0xc4056) (toplev.c line 1479)
  #4  0xb120 in finish_function () (c-decl.c line 3554)
  #5  0x276c in yyparse () (c-parse.y line 223)
  #6  0x1282a in compile_file (name=(char *) 0xefffcf9 "/tmp/cca16055.cpp") (toplev.c line 990)
  #7  0x13cfe in main (argc=7, argv=(char **) 0xefffc78, envp=(char **) 0xefffc98) (toplev.c line 1740)
  (gdb) frame 2
  #2  0x68554 in final (first=(rtx) 0xba3a0, file=(struct _iobuf *) 0xb0810, write_symbols=NO_DEBUG, optimize=0, prescan=0) (final.c line 909)
  909                           abort ();
  (gdb) l
  904                        which follows a deleted test insn, and that test insn
  905                        needs to be reinserted.  */
  906                     if (template == 0)
  907                       {
  908                         if (PREV_INSN (insn) != last_ignored_compare)
  909                           abort ();
  910                         insn = PREV_INSN (insn);
  911                         body = PATTERN (insn);
  912                         new_block = 0;
  913                         goto reinsert_compare;
  (gdb) p insn
  $1 = (rtx) 0xbaa18
  (gdb) p last_ignored_compare
  $2 = (rtx) 0x0
  (gdb)

/*
 * hash.c
 */

#include <stdio.h>
#define TRUE           (1)
#define FALSE          (0)
#include <ctype.h>

#define min(a, b)	((a) < (b) ? (a) : (b))

struct hash_entry
{
  char *      hash_string;	/* points to where the symbol string is */
				/* NULL means slot is not used */
				/* DELETED means slot was deleted */
  char *      hash_value;	/* user's datum, associated with symbol */
};

#define HASH_STATLENGTH	(6)
struct hash_control
{
  struct hash_entry * hash_where; /* address of hash table */
  int         hash_sizelog;	/* Log of ( hash_mask + 1 ) */
  int         hash_mask;	/* masks a hash into index into table */
  int         hash_full;	/* when hash_stat[STAT_USED] exceeds this, */
				/* grow table */
  struct hash_entry * hash_wall; /* point just after last (usable) entry */
				/* here we have some statistics */
  int hash_stat[HASH_STATLENGTH]; /* lies & statistics */
				/* we need STAT_USED & STAT_SIZE */
};

#define STATLENGTH     (6)	/* size of statistics block */

void
hash_say(handle,buffer,bufsiz)
     register struct hash_control * handle;
     register int                   buffer[/*bufsiz*/];
     register int                   bufsiz;
{
  register int * nd;			/* limit of statistics block */
  register int * ip;			/* scan statistics */

  ip = handle -> hash_stat;
  nd = ip + min(bufsiz-1,STATLENGTH);
  if (bufsiz>0)			/* trust nothing! bufsiz<=0 is dangerous */
    {
      *buffer++ = STATLENGTH;
      for (; ip<nd; ip++,buffer++)
	{
	  *buffer = *ip;
	}
    }
}

/*
 * end of hash.c
 */

/*
 * Standard disclaimers apply
 *
 * uucp: tektronix!tessi!mason
 */