asbhogal@UUNET.UU.NET (Amrik Bhogal) (03/09/89)
Hi, I seem to encounter a fatal (signal 11) error in cc1 when I try to compile the program (tmk.E.c) shown below, using the -O option under gcc 1.34. The details are shown in the script below, and summarized here: - gcc 1.34 - Program (tmk.E.c) compiled with 'gcc -c -O' - gcc installed with md -> m68k.md and tm.h -> tm-sun3.h - Sun 3/260 workstation, runing Sun Unix 4.2, release 3.5 (Export) I hope you can find some time to look at it. Thanks. Amrik. --- Amrik Bhogal - University of Waterloo, EE grad studies {allegra,decvax,utzoo,clyde,uunet}!watmath!watvlsi!asbhogal asbhogal@watvlsi.waterloo.{edu,cdn} asbhogal@watvlsi.uwaterloo.ca --- ----------------- Script -------------------- Script started on Wed Mar 8 23:56:52 1989 vlsisun3% cd ~/sim [vlsisun3 : /u/asbhogal/sim]% gcc -v gcc version 1.34 [vlsisun3 : /u/asbhogal/sim]% gcc -E tmk.c >tmk.E.c [vlsisun3 : /u/asbhogal/sim]% gcc -c -O tmk.E.c gcc: Program cc1 got fatal signal 11. [vlsisun3 : /u/asbhogal/sim]% [vlsisun3 : /u/asbhogal/sim]% cd ~/gnu/gcc [vlsisun3 : /u/asbhogal/gnu/gcc]% cat config.status Links are now set up for use with a sun3. [vlsisun3 : /u/asbhogal/gnu/gcc]% [vlsisun3 : /u/asbhogal/gnu/gcc]% ls -l tm.h md lrwxrwxrwx 1 asbhogal 7 Mar 2 11:54 md -> m68k.md lrwxrwxrwx 1 asbhogal 9 Mar 2 11:54 tm.h -> tm-sun3.h [vlsisun3 : /u/asbhogal/gnu/gcc]% [vlsisun3 : /u/asbhogal/gnu/gcc]% cat /etc/motd Sun UNIX 4.2 Release 3.5EXPORT (VLSISUN3) #1: Thu Jun 30 15:52:39 EDT 1988 System Dump Summary: LAST LEVEL 0 SAVE Thu Mar 2 09:35:02 EST 1989 LAST LEVEL 2 SAVE Fri Mar 3 08:03:29 EST 1989 LAST LEVEL 4 SAVE Wed Mar 8 07:49:44 EST 1989 [vlsisun3 : /u/asbhogal/gnu/gcc]% [vlsisun3 : /u/asbhogal/gnu/gcc]% exit [vlsisun3 : /u/asbhogal/gnu/gcc]% script done on Wed Mar 8 23:58:48 1989 ---------- Program source code (tmk.E.c) ----------- # 1 "tmk.c" # 1 "/usr/include/stdio.h" extern struct _iobuf { int _cnt; unsigned char *_ptr; unsigned char *_base; int _bufsiz; short _flag; char _file; } _iob[]; extern struct _iobuf *fopen(); extern struct _iobuf *fdopen(); extern struct _iobuf *freopen(); extern struct _iobuf *popen(); extern struct _iobuf *tmpfile(); extern long ftell(); extern char *fgets(); extern char *gets(); extern char *ctermid(); extern char *cuserid(); extern char *tempnam(); extern char *tmpnam(); # 30 "tmk.c" # 1 "/usr/include/string.h" extern char *strcpy(), *strncpy(), *strcat(), *strncat(), *strchr(), *strrchr(), *strpbrk(), *strtok(); extern int strcmp(), strncmp(), strlen(), strspn(), strcspn(); # 31 "tmk.c" # 1 "sim.h" struct ut_t { char pl; unsigned model:16; unsigned watchpt:1; unsigned breakpt:1; unsigned tracept:1; unsigned usechd:1; long name_ptr; unsigned nins:16; unsigned :16; int iptr; int output; int th1, th2, th3; }; struct utinpd_t { int index; int weight; }; struct nfhdr_t { int caps_mode; int nunits; int npins; int npouts; int iods; int chds; int ncla; }; struct models_t { char name[6]; int (*fn)(); }; struct class_attr_t { int class; int nattrs; }; # 32 "tmk.c" struct ut_t *ut; int ut_limit = 0; struct utinpd_t *utinpd; int utinpd_limit = 0; char *utchd; int utchd_limit = 0; struct class_attr_t *class_attr; int class_attr_limit = 0; struct _iobuf *net_fp; struct _iobuf *ic_fp; char curr_unit_name[120 ]; struct utinpd_t temp_inpd[512 ]; extern int hinit(), hadd(), hfind(); extern hget_name(), hend(), hprint(); extern int error_exit(), str2int(), print_ut(), print_ic(), dump(); extern struct models_t model[]; extern int model_limit; main(argc, argv) int argc; char *argv[]; { register struct ut_t *ptr; char line[256]; char *np; char net_file[80], hash_file[80], names_file[80]; struct _iobuf *names_fp; char th3str[128]; char arrow[2]; struct nfhdr_t net_header; long name_ptr; int level, ut_ix, iptr; int rc, end; int i, j, len, temp; int ni, no; int inpn, in_ix, wt; if( argc < 3 ) error_exit( "Usage: makenet <file> <# units> {debug}", 0 ); sprintf(net_file, "%s%s", argv[1], ".net" ); sprintf(hash_file, "%s%s", argv[1], ".hash" ); sprintf(names_file, "%s%s", argv[1], ".names" ); if( (ic_fp = fopen(argv[1], "r")) == 0 ) error_exit( "Unable to open interconnect file", argv[1] ); if( (names_fp = fopen(names_file, "r")) == 0 ) error_exit( "Unable to open .names file", names_file ); if( (net_fp = fopen(net_file, "w")) == 0 ) error_exit( "Unable to create .net file", net_file ); temp = atoi( argv[2] ); if( !hinit( hash_file, temp*3-1 ) ) error_exit( "Unable to create .hash file", hash_file ); ut_limit = 0; while( fgets(line, sizeof(line), names_fp) != 0 ) { line[ strlen(line) - 1] = '\0'; if( (np = strchr(line, ':')) != 0 ) (void) hadd( np+1, ut_limit++ ); else error_exit( "Level:Name incorrect in .names file for", line ); } fclose( names_fp ); if( temp != ut_limit ) printf( "** Warning: #units mismatch between wc and .names **\n" ); if( (ut = (struct ut_t *) calloc( ut_limit, sizeof(struct ut_t) )) == 0 ) error_exit( "Unable to allocate ut table", 0 ); if( (utinpd = (struct utinpd_t *)calloc( 40000 , sizeof(struct utinpd_t) )) == 0 ) error_exit( "Unable to allocate utinpd", 0 ); if( (utchd = (char *) malloc( 10000 )) == 0 ) error_exit( "Unable to allocate char data space", 0 ); if( (class_attr = (struct class_attr_t *) calloc( 512 , sizeof(struct class_attr_t) )) == 0 ) error_exit( "Unable to allocate class_attr table", 0 ); while( 1 ) { rc = get_name(curr_unit_name,sizeof(curr_unit_name), &name_ptr, &level, &ut_ix); if( rc == (-1) || rc == -2 ) break; else if( rc == 0 ) error_exit( "Unable to re-locate", curr_unit_name ); ptr = &ut[ut_ix]; ptr -> name_ptr = name_ptr; ptr -> pl = level; ptr -> watchpt = ptr -> breakpt = ptr -> tracept = 0; ptr -> output = 0; if( (rc = get_model( &temp )) == (-1) ) error_exit( "Premature eof at model for", curr_unit_name ); else if( rc == 0 ) error_exit( "Incorrect model for unit", curr_unit_name ); ptr -> model = temp; if( get_int(&(ptr -> th1), " ,\t\n" ) == (-1) ) error_exit( "Premature eof at th1 for", curr_unit_name ); if( get_int(&(ptr -> th2), " ,\t\n" ) == (-1) ) error_exit( "Premature eof at th2 for", curr_unit_name ); if( get_token( th3str, sizeof(th3str), " \t\n") == (-1) ) error_exit( "Premature eof at th3 for", curr_unit_name ); if( *th3str == '"' ) { len = strlen( th3str ) - 2; th3str[len+1] = '\0'; if( len + utchd_limit >= 10000 ) error_exit( "No char data space left at", curr_unit_name ); ptr -> usechd = 1; ptr -> th3 = utchd_limit; strcpy( &utchd[utchd_limit], th3str+1 ); utchd_limit += len + 1; } else { ptr -> usechd = 0; str2int( th3str, &(ptr -> th3) ); } if( ptr -> pl == 0 ) ptr -> output = (model[ptr -> model].fn)( 0, 0 , ptr -> th1, ptr -> th2, ptr -> th3); if( (rc = skip_lws()) == '<' ) { if( (rc = get_token( arrow, sizeof(arrow), "-" )) == (-1) ) error_exit( "Premature eof at <- for", curr_unit_name ); ni = 0; while( get_irec( &in_ix, &inpn, &wt, &end ) ) { if( inpn < 512 ) { temp_inpd[inpn].index = in_ix; temp_inpd[inpn].weight = wt; } else error_exit( "Too many inputs for", curr_unit_name ); ++ni; if( end ) break; } ptr -> nins = ni; if( ni > 0 ) { if( utinpd_limit + ni > 40000 ) error_exit( "Out of input data space for", curr_unit_name ); ptr -> iptr = utinpd_limit; memcpy( (char *)&utinpd[utinpd_limit], (char *)temp_inpd, ni*sizeof(struct utinpd_t)); utinpd_limit += ni; } else ptr -> iptr = 0; } else { ptr -> nins = 0; ptr -> iptr = 0; } } if( rc == -2 ) process_init_cmds(); fclose( ic_fp ); for(ni = 0, ptr=ut; ni<ut_limit && ptr -> pl == 0 ; ++ni,++ptr); for( no = 0, ptr = &ut[ut_limit-1], i=ut_limit-1; i>=0; --i, --ptr ) { hget_name( ptr -> name_ptr, curr_unit_name, sizeof(curr_unit_name) ); if( *curr_unit_name == '$' ) ++no; else break; } net_header.caps_mode = hfind( "$cs_empty", &name_ptr, &ut_ix ); net_header.nunits = ut_limit-(ni+no); net_header.npins = ni; net_header.npouts = no; net_header.iods = utinpd_limit; net_header.chds = utchd_limit; net_header.ncla = class_attr_limit; fwrite( (char *) &net_header, sizeof(net_header), 1, net_fp ); fwrite( (char *) ut, sizeof(struct ut_t), ut_limit, net_fp ); fwrite( (char *) utinpd, sizeof(struct utinpd_t), utinpd_limit, net_fp ); if( utchd_limit > 0 ) fwrite( utchd, 1, utchd_limit, net_fp ); if( class_attr_limit > 0 ) fwrite( (char *) class_attr, sizeof( struct class_attr_t), class_attr_limit, net_fp ); fclose( net_fp ); printf( "Net generation complete for \"%s\" ($I:%d $O:%d U:%d Total:%d)\n", argv[1], net_header.npins, net_header.npouts, net_header.nunits, ut_limit ); if( argc > 3 ) { printf( "\n------------ Unit table ---------\n" ); dump( print_ut ); } hend(); return( 1 ); }
asbhogal@watvlsi.waterloo.edu (Amrik Bhogal) (03/11/89)
Hi, I seem to encounter a fatal (signal 11) error in cc1 when I try to compile the program (tmk.E.c) shown below, using the -O option under gcc 1.34. The details are shown in the script below, and summarized here: - gcc 1.34 - Program (tmk.E.c) compiled with 'gcc -c -O' - gcc installed with md -> m68k.md and tm.h -> tm-sun3.h - Sun 3/260 workstation, runing Sun Unix 4.2, release 3.5 (Export) I hope you can find some time to look at it. Thanks. Amrik. --- Amrik Bhogal - University of Waterloo, EE grad studies {allegra,decvax,utzoo,clyde,uunet}!watmath!watvlsi!asbhogal asbhogal@watvlsi.waterloo.{edu,cdn} asbhogal@watvlsi.uwaterloo.ca --- ----------------- Script -------------------- Script started on Wed Mar 8 23:56:52 1989 vlsisun3% cd ~/sim [vlsisun3 : /u/asbhogal/sim]% gcc -v gcc version 1.34 [vlsisun3 : /u/asbhogal/sim]% gcc -E tmk.c >tmk.E.c [vlsisun3 : /u/asbhogal/sim]% gcc -c -O tmk.E.c gcc: Program cc1 got fatal signal 11. [vlsisun3 : /u/asbhogal/sim]% [vlsisun3 : /u/asbhogal/sim]% cd ~/gnu/gcc [vlsisun3 : /u/asbhogal/gnu/gcc]% cat config.status Links are now set up for use with a sun3. [vlsisun3 : /u/asbhogal/gnu/gcc]% [vlsisun3 : /u/asbhogal/gnu/gcc]% ls -l tm.h md lrwxrwxrwx 1 asbhogal 7 Mar 2 11:54 md -> m68k.md lrwxrwxrwx 1 asbhogal 9 Mar 2 11:54 tm.h -> tm-sun3.h [vlsisun3 : /u/asbhogal/gnu/gcc]% [vlsisun3 : /u/asbhogal/gnu/gcc]% cat /etc/motd Sun UNIX 4.2 Release 3.5EXPORT (VLSISUN3) #1: Thu Jun 30 15:52:39 EDT 1988 System Dump Summary: LAST LEVEL 0 SAVE Thu Mar 2 09:35:02 EST 1989 LAST LEVEL 2 SAVE Fri Mar 3 08:03:29 EST 1989 LAST LEVEL 4 SAVE Wed Mar 8 07:49:44 EST 1989 [vlsisun3 : /u/asbhogal/gnu/gcc]% [vlsisun3 : /u/asbhogal/gnu/gcc]% exit [vlsisun3 : /u/asbhogal/gnu/gcc]% script done on Wed Mar 8 23:58:48 1989 ---------- Program source code (tmk.E.c) ----------- # 1 "tmk.c" # 1 "/usr/include/stdio.h" extern struct _iobuf { int _cnt; unsigned char *_ptr; unsigned char *_base; int _bufsiz; short _flag; char _file; } _iob[]; extern struct _iobuf *fopen(); extern struct _iobuf *fdopen(); extern struct _iobuf *freopen(); extern struct _iobuf *popen(); extern struct _iobuf *tmpfile(); extern long ftell(); extern char *fgets(); extern char *gets(); extern char *ctermid(); extern char *cuserid(); extern char *tempnam(); extern char *tmpnam(); # 30 "tmk.c" # 1 "/usr/include/string.h" extern char *strcpy(), *strncpy(), *strcat(), *strncat(), *strchr(), *strrchr(), *strpbrk(), *strtok(); extern int strcmp(), strncmp(), strlen(), strspn(), strcspn(); # 31 "tmk.c" # 1 "sim.h" struct ut_t { char pl; unsigned model:16; unsigned watchpt:1; unsigned breakpt:1; unsigned tracept:1; unsigned usechd:1; long name_ptr; unsigned nins:16; unsigned :16; int iptr; int output; int th1, th2, th3; }; struct utinpd_t { int index; int weight; }; struct nfhdr_t { int caps_mode; int nunits; int npins; int npouts; int iods; int chds; int ncla; }; struct models_t { char name[6]; int (*fn)(); }; struct class_attr_t { int class; int nattrs; }; # 32 "tmk.c" struct ut_t *ut; int ut_limit = 0; struct utinpd_t *utinpd; int utinpd_limit = 0; char *utchd; int utchd_limit = 0; struct class_attr_t *class_attr; int class_attr_limit = 0; struct _iobuf *net_fp; struct _iobuf *ic_fp; char curr_unit_name[120 ]; struct utinpd_t temp_inpd[512 ]; extern int hinit(), hadd(), hfind(); extern hget_name(), hend(), hprint(); extern int error_exit(), str2int(), print_ut(), print_ic(), dump(); extern struct models_t model[]; extern int model_limit; main(argc, argv) int argc; char *argv[]; { register struct ut_t *ptr; char line[256]; char *np; char net_file[80], hash_file[80], names_file[80]; struct _iobuf *names_fp; char th3str[128]; char arrow[2]; struct nfhdr_t net_header; long name_ptr; int level, ut_ix, iptr; int rc, end; int i, j, len, temp; int ni, no; int inpn, in_ix, wt; if( argc < 3 ) error_exit( "Usage: makenet <file> <# units> {debug}", 0 ); sprintf(net_file, "%s%s", argv[1], ".net" ); sprintf(hash_file, "%s%s", argv[1], ".hash" ); sprintf(names_file, "%s%s", argv[1], ".names" ); if( (ic_fp = fopen(argv[1], "r")) == 0 ) error_exit( "Unable to open interconnect file", argv[1] ); if( (names_fp = fopen(names_file, "r")) == 0 ) error_exit( "Unable to open .names file", names_file ); if( (net_fp = fopen(net_file, "w")) == 0 ) error_exit( "Unable to create .net file", net_file ); temp = atoi( argv[2] ); if( !hinit( hash_file, temp*3-1 ) ) error_exit( "Unable to create .hash file", hash_file ); ut_limit = 0; while( fgets(line, sizeof(line), names_fp) != 0 ) { line[ strlen(line) - 1] = '\0'; if( (np = strchr(line, ':')) != 0 ) (void) hadd( np+1, ut_limit++ ); else error_exit( "Level:Name incorrect in .names file for", line ); } fclose( names_fp ); if( temp != ut_limit ) printf( "** Warning: #units mismatch between wc and .names **\n" ); if( (ut = (struct ut_t *) calloc( ut_limit, sizeof(struct ut_t) )) == 0 ) error_exit( "Unable to allocate ut table", 0 ); if( (utinpd = (struct utinpd_t *)calloc( 40000 , sizeof(struct utinpd_t) )) == 0 ) error_exit( "Unable to allocate utinpd", 0 ); if( (utchd = (char *) malloc( 10000 )) == 0 ) error_exit( "Unable to allocate char data space", 0 ); if( (class_attr = (struct class_attr_t *) calloc( 512 , sizeof(struct class_attr_t) )) == 0 ) error_exit( "Unable to allocate class_attr table", 0 ); while( 1 ) { rc = get_name(curr_unit_name,sizeof(curr_unit_name), &name_ptr, &level, &ut_ix); if( rc == (-1) || rc == -2 ) break; else if( rc == 0 ) error_exit( "Unable to re-locate", curr_unit_name ); ptr = &ut[ut_ix]; ptr -> name_ptr = name_ptr; ptr -> pl = level; ptr -> watchpt = ptr -> breakpt = ptr -> tracept = 0; ptr -> output = 0; if( (rc = get_model( &temp )) == (-1) ) error_exit( "Premature eof at model for", curr_unit_name ); else if( rc == 0 ) error_exit( "Incorrect model for unit", curr_unit_name ); ptr -> model = temp; if( get_int(&(ptr -> th1), " ,\t\n" ) == (-1) ) error_exit( "Premature eof at th1 for", curr_unit_name ); if( get_int(&(ptr -> th2), " ,\t\n" ) == (-1) ) error_exit( "Premature eof at th2 for", curr_unit_name ); if( get_token( th3str, sizeof(th3str), " \t\n") == (-1) ) error_exit( "Premature eof at th3 for", curr_unit_name ); if( *th3str == '"' ) { len = strlen( th3str ) - 2; th3str[len+1] = '\0'; if( len + utchd_limit >= 10000 ) error_exit( "No char data space left at", curr_unit_name ); ptr -> usechd = 1; ptr -> th3 = utchd_limit; strcpy( &utchd[utchd_limit], th3str+1 ); utchd_limit += len + 1; } else { ptr -> usechd = 0; str2int( th3str, &(ptr -> th3) ); } if( ptr -> pl == 0 ) ptr -> output = (model[ptr -> model].fn)( 0, 0 , ptr -> th1, ptr -> th2, ptr -> th3); if( (rc = skip_lws()) == '<' ) { if( (rc = get_token( arrow, sizeof(arrow), "-" )) == (-1) ) error_exit( "Premature eof at <- for", curr_unit_name ); ni = 0; while( get_irec( &in_ix, &inpn, &wt, &end ) ) { if( inpn < 512 ) { temp_inpd[inpn].index = in_ix; temp_inpd[inpn].weight = wt; } else error_exit( "Too many inputs for", curr_unit_name ); ++ni; if( end ) break; } ptr -> nins = ni; if( ni > 0 ) { if( utinpd_limit + ni > 40000 ) error_exit( "Out of input data space for", curr_unit_name ); ptr -> iptr = utinpd_limit; memcpy( (char *)&utinpd[utinpd_limit], (char *)temp_inpd, ni*sizeof(struct utinpd_t)); utinpd_limit += ni; } else ptr -> iptr = 0; } else { ptr -> nins = 0; ptr -> iptr = 0; } } if( rc == -2 ) process_init_cmds(); fclose( ic_fp ); for(ni = 0, ptr=ut; ni<ut_limit && ptr -> pl == 0 ; ++ni,++ptr); for( no = 0, ptr = &ut[ut_limit-1], i=ut_limit-1; i>=0; --i, --ptr ) { hget_name( ptr -> name_ptr, curr_unit_name, sizeof(curr_unit_name) ); if( *curr_unit_name == '$' ) ++no; else break; } net_header.caps_mode = hfind( "$cs_empty", &name_ptr, &ut_ix ); net_header.nunits = ut_limit-(ni+no); net_header.npins = ni; net_header.npouts = no; net_header.iods = utinpd_limit; net_header.chds = utchd_limit; net_header.ncla = class_attr_limit; fwrite( (char *) &net_header, sizeof(net_header), 1, net_fp ); fwrite( (char *) ut, sizeof(struct ut_t), ut_limit, net_fp ); fwrite( (char *) utinpd, sizeof(struct utinpd_t), utinpd_limit, net_fp ); if( utchd_limit > 0 ) fwrite( utchd, 1, utchd_limit, net_fp ); if( class_attr_limit > 0 ) fwrite( (char *) class_attr, sizeof( struct class_attr_t), class_attr_limit, net_fp ); fclose( net_fp ); printf( "Net generation complete for \"%s\" ($I:%d $O:%d U:%d Total:%d)\n", argv[1], net_header.npins, net_header.npouts, net_header.nunits, ut_limit ); if( argc > 3 ) { printf( "\n------------ Unit table ---------\n" ); dump( print_ut ); } hend(); return( 1 ); }