bbs@RUTGERS.EDU (Barry B. Schwartz) (03/14/89)
I am reporting a possible bug in gcc version 1.34
(and coincidentally version 1.33) for the sun-386i
running SunOS version 4.0.1.
I compiled (but never "installed") gcc 1.34 according to the instructions
in INSTALL, and when I ran the object file comparison test
(both the csh version given and the following bourne shell
version:
for i in *.o
do
cmp $i stage2/$i
done
) I got many messages to the effect that different stages
of object file were differing in the fifth byte. I got
a similar result when comparing any two stages of the bootstrap
pairwise, even if I carried out another bootstrap stage.
I tried this with the built-in make, with Gnu make, and with
gnu make and gcc vers. 1.33, and got similar results. Also
I tried
gmake bootstrap
(where gmake was the Gnu make) and got similar results.
When I did hex dumps of two of the object files
and compared them, I found differences in bytes 5 and 6 and in
those bytes only.
I found similar results on two different compilations with two
different object code outputs. I have forgotten what files
were checked in the first pair of hex dumps, but here are the complete
diff outputs from the second pair of hex dumps (od -x):
1c1
< 0000000 014c 0004 fe94 2419 c26a 0000 045e 0000
---
> 0000000 014c 0004 f92e 2419 c26a 0000 045e 0000
The first dump line is for stage 3 of expr.o (./expr.o), whereas
the second dump line is for stage 2 of expr.o (./stage2/expr.o).
I tried
config.gcc sun386
and
config.gcc sun386i
(which did the same thing, apparently).
Either way I got similar results.
I never noticed any error messages or warnings during any
of the compilations.
Apparently bison was never invoked.
I was using the standard sun linker (as far as I know).
I changed the makefile definitions of bindir and libdir
to /home/public/bin and /home/public/lib, respectively.
Also, when I used gnu make, i called it gmake and put
the following line in the makefile:
MAKE = gmake
------------------
If the problem is a bug, I hope I have been helpful.
If it isn't, then I say "Woops!" and do the compilation
correctly when I find out how. I am curious just how
harmful this problem could be.
Thank you for everything.
Barry Schwartz
cdspr!bbs@rutgers.edu
wdp@ZEUS.CRAY.COM (Walter Poxon) (09/30/89)
======================================================================== We are using GCC 1.36 on Sun-3/50s under SunOS 3.5. Our compiler is configured thusly: aux-output.c: symbolic link to ./config/out-m68k.c config.h: symbolic link to ./config/xm-m68k.h md: symbolic link to ./config/m68k.md tm.h: symbolic link to ./config/tm-sun3os3nf.h While compiling the following source code, with no command-line parameters to gcc other than "-c", we get the error gcc: Program cc1 got fatal signal 6. The preprocessed source file follows my .signature. It is some rot generated by a 4GL prepreocessor. -- Walter Poxon Domain: wdp@cray.com Cray Research Old style: wdp%cray.com@uc.msc.umn.edu 1440 Northland Dr. UUCP: uunet!cray!wdp Mendota Hts, MN 55120 USA Telephone: +1 612 681 3126 ======================================================================== 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(); extern char *strcpy(), *strncpy(), *strcat(), *strncat(), *strchr(), *strrchr(), *strpbrk(), *strtok(); extern int strcmp(), strncmp(), strlen(), strspn(), strcspn(); typedef struct tir_list { char tir[10]; char from[30]; char to[30]; char severity[15]; char status[15]; char open_date[15]; char change_date[15]; char product[20]; char opsys[20]; char machine[15]; char prj[15]; char spr[10]; char des[10]; char info[10]; char res[10]; char found[20]; char fixed[20]; struct tir_list *next; struct tir_list *prev; } tirlist_t; extern int errno; struct sqlca { char sqlcaid[8]; long sqlabc; long sqlcode; struct { unsigned short sqlerrml; char sqlerrmc[70]; } sqlerrm; char sqlerrp[8]; long sqlerrd[6]; char sqlwarn[8]; char sqlext[8]; }; struct sqlca sqlca ; static struct { unsigned int sq001N; unsigned char *sq001V[4]; unsigned int sq001L[4]; unsigned short sq001T[4]; unsigned short *sq001I[4]; } sq001 = {4}; static struct { unsigned int sq002N; unsigned char *sq002V[1]; unsigned int sq002L[1]; unsigned short sq002T[1]; unsigned short *sq002I[1]; } sq002 = {1}; static struct { unsigned int sq003N; unsigned char *sq003V[1]; unsigned int sq003L[1]; unsigned short sq003T[1]; unsigned short *sq003I[1]; } sq003 = {1}; static struct { unsigned int sq004N; unsigned char *sq004V[1]; unsigned int sq004L[1]; unsigned short sq004T[1]; unsigned short *sq004I[1]; } sq004 = {1}; static char sq005[404] = "UPDATE OIR SET CHANGE_DATE=SYSDATE,STATUS=:b1:i1,SERIAL_NUM=:b2:i2,REPORT_BY=:b3:i3,ASSIGN_TO=:b4:i4,CAUSE=:b5:i5,OS_NAME=:b6:i6,OS_VERS=:b7:i7,CORE=:b8:i8,VENDOR=:b9:i9,DEVICE=:b10:i10,TIM_OF_CALL=TO_DATE(:b11:i11,'MM/DD/YY HH24:MI:SS'),TIM_OF_ACK=TO_DA TE(:b12:i12,'MM/DD/YY HH24:MI:SS'),TIM_ON_SITE=TO_DATE(:b13:i13,'MM/DD/YY HH24:MI:SS'),DESCRIPTION=:b14:i14,RESOLUTION=:b15:i15 WHERE OIR_NUMBER=:b16" ; static struct { unsigned int sq006N; unsigned char *sq006V[16]; unsigned int sq006L[16]; unsigned short sq006T[16]; unsigned short *sq006I[16]; } sq006 = {16}; static struct { unsigned int sq007N; unsigned char *sq007V[1]; unsigned int sq007L[1]; unsigned short sq007T[1]; unsigned short *sq007I[1]; } sq007 = {1}; static struct { unsigned int sq008N; unsigned char *sq008V[1]; unsigned int sq008L[1]; unsigned short sq008T[1]; unsigned short *sq008I[1]; } sq008 = {1}; static char sq009[31] = "SELECT MAX(OIR_NUMBER)FROM OIR" ; static struct { unsigned int sq010N; unsigned char *sq010V[1]; unsigned int sq010L[1]; unsigned short sq010T[1]; unsigned short *sq010I[1]; } sq010 = {1}; static struct { unsigned int sq011N; unsigned char *sq011V[1]; unsigned int sq011L[1]; unsigned short sq011T[1]; unsigned short *sq011I[1]; } sq011 = {1}; static char sq012[77] = "INSERT INTO OIR(OIR_NUMBER,OPEN_DATE,CHANGE_DATE)VALUES(:b1,SYSDATE,SYSDATE)" ; static struct { unsigned int sq013N; unsigned char *sq013V[1]; unsigned int sq013L[1]; unsigned short sq013T[1]; unsigned short *sq013I[1]; } sq013 = {1}; static struct { unsigned int sq014N; unsigned char *sq014V[1]; unsigned int sq014L[1]; unsigned short sq014T[1]; unsigned short *sq014I[1]; } sq014 = {1}; static struct { unsigned int sq015N; unsigned char *sq015V[1]; unsigned int sq015L[1]; unsigned short sq015T[1]; unsigned short *sq015I[1]; } sq015 = {1}; static char sq016[37] = "DELETE FROM OIR WHERE OIR_NUMBER=:b1" ; static struct { unsigned int sq017N; unsigned char *sq017V[1]; unsigned int sq017L[1]; unsigned short sq017T[1]; unsigned short *sq017I[1]; } sq017 = {1}; static struct { unsigned int sq018N; unsigned char *sq018V[1]; unsigned int sq018L[1]; unsigned short sq018T[1]; unsigned short *sq018I[1]; } sq018 = {1}; static int SQLTM[8]; static int sqlcun[4] = { 0,0,0,0}; static int sqlusi[1] = { 0}; static unsigned int sqlami = 0; static int SQLBT0 = 1; static int SQLBT1 = 2; static int SQLBT2 = 4; static int SQLBT3 = 9; static unsigned int sqlvsn = 10110; extern sqlab2(); extern sqlad2(); extern sqlbs2(); extern sqlcom(); extern sqlexe(); extern sqlfch(); extern sqllo2(); extern sqlopn(); extern sqlosq(); extern sqlrol(); extern sqlsca(); extern sqlscc(); extern sqlsch(); extern sqltfl(); extern sqlwnr(); int oconnect() { struct { unsigned short len; unsigned char arr[20]; } login; struct { unsigned short len; unsigned char arr[20]; } pw; char *oracle_error(); void rollback(); setenv("TWO_TASK", "t:codd"); strcpy((login.arr) , "oir" ); strcpy((pw.arr) , "oir" ); (login.len = strlen(login.arr)) ; (pw.len = strlen(pw.arr)) ; sqlsca(&sqlca); sq001.sq001V[0] = (unsigned char *)&login.len; sq001.sq001L[0] = (unsigned int)22; sq001.sq001T[0] = (unsigned short)9; sq001.sq001I[0] = (unsigned short *)0; sq001.sq001V[1] = (unsigned char *)&pw.len; sq001.sq001L[1] = (unsigned int)22; sq001.sq001T[1] = (unsigned short)9; sq001.sq001I[1] = (unsigned short *)0; sq001.sq001T[2] = (unsigned short)10; sq001.sq001T[3] = (unsigned short)10; SQLTM[0] = (int)0; SQLTM[1] = (int)10; sqllo2( &sq001.sq001N,sq001.sq001V,sq001.sq001L,sq001.sq001T, &sqlami, &SQLTM[0], &SQLTM[1], &sqlvsn); if (sqlca.sqlcode < 0) goto o_error; return 0; o_error: oracle_error(); rollback(); sqlca.sqlcode = 0; return 1; } char * oracle_error() { static char errorm[256]; sprintf(errorm, "%s (%d)", sqlca.sqlerrm.sqlerrmc, -sqlca.sqlcode); fprintf((&_iob[2]) ,"%s\n",errorm); return errorm; } extern int errno; hangup() { sqlsca(&sqlca); if ( !sqlusi[0] ) { sq002.sq002T[0] = (unsigned short)10; SQLTM[0] = (int)4; sqlbs2(&sq002.sq002N, sq002.sq002V, sq002.sq002L, sq002.sq002T, sq002.sq002I, &SQLTM[0], &sqlusi[0]); } sqlsch(&sqlusi[0]); SQLTM[0] = (int)1; sqlcom(&SQLTM[0]); sqlca.sqlcode = 0; return 0; } void rollback() { sqlsca(&sqlca); if ( !sqlusi[0] ) { sq003.sq003T[0] = (unsigned short)10; SQLTM[0] = (int)4; sqlbs2(&sq003.sq003N, sq003.sq003V, sq003.sq003L, sq003.sq003T, sq003.sq003I, &SQLTM[0], &sqlusi[0]); } sqlsch(&sqlusi[0]); SQLTM[0] = (int)0; sqlrol(&SQLTM[0]); } char * update_oir(oir,stat,sn,report,assign,caus,name,vers,corefile, vend,dev,call,ack,site,des,res) char *oir,*stat,*sn,*report,*assign,*caus,*name,*vers,*corefile, *vend,*dev,*call,*ack,*site,*des,*res; { struct { unsigned short len; unsigned char arr[10]; } oir_number; struct { unsigned short len; unsigned char arr[10]; } status; struct { unsigned short len; unsigned char arr[10]; } serial_num; struct { unsigned short len; unsigned char arr[30]; } report_by; struct { unsigned short len; unsigned char arr[30]; } assign_to; struct { unsigned short len; unsigned char arr[15]; } cause; struct { unsigned short len; unsigned char arr[15]; } os_name; struct { unsigned short len; unsigned char arr[15]; } os_vers; struct { unsigned short len; unsigned char arr[80]; } core; struct { unsigned short len; unsigned char arr[30]; } vendor; struct { unsigned short len; unsigned char arr[30]; } device; struct { unsigned short len; unsigned char arr[20]; } tim_of_call; struct { unsigned short len; unsigned char arr[20]; } tim_of_ack; struct { unsigned short len; unsigned char arr[20]; } tim_on_site; struct { unsigned short len; unsigned char arr[240]; } description; struct { unsigned short len; unsigned char arr[240]; } resolution; short oir_numberi, statusi, serial_numi, report_byi, assign_toi, causei, os_namei, os_versi, corei, vendori, devicei, tim_of_calli, tim_of_acki, tim_on_sitei, descriptioni, resolutioni; static char *value; char *oracle_error(); oir_numberi=statusi=serial_numi=report_byi=assign_toi=causei=os_namei= os_versi=corei=vendori=devicei=tim_of_calli=tim_of_acki=tim_on_sitei= descriptioni=resolutioni=0; strcpy((oir_number.arr) , oir); if (!(oir_number.len = strlen(oir_number.arr)) ) return value = "update_oir: halted: null oir number"; strcpy((status.arr) , stat); if (!(status.len = strlen(status.arr)) ) statusi = -1; strcpy((serial_num.arr) , sn); if (!(serial_num.len = strlen(serial_num.arr)) ) serial_numi = -1; strcpy((report_by.arr) , report); if (!(report_by.len = strlen(report_by.arr)) ) report_byi = -1; strcpy((assign_to.arr) , assign); if (!(assign_to.len = strlen(assign_to.arr)) ) assign_toi = -1; strcpy((cause.arr) , caus); if (!(cause.len = strlen(cause.arr)) ) causei = -1; strcpy((os_name.arr) , name); if (!(os_name.len = strlen(os_name.arr)) ) os_namei = -1; strcpy((os_vers.arr) , vers); if (!(os_vers.len = strlen(os_vers.arr)) ) os_versi = -1; strcpy((core.arr) , corefile); if (!(core.len = strlen(core.arr)) ) corei = -1; strcpy((vendor.arr) , vend); if (!(vendor.len = strlen(vendor.arr)) ) vendori = -1; strcpy((device.arr) , dev); if (!(device.len = strlen(device.arr)) ) devicei = -1; strcpy((tim_of_call.arr) , call); if (!(tim_of_call.len = strlen(tim_of_call.arr)) ) tim_of_calli = -1; strcpy((tim_of_ack.arr) , ack); if (!(tim_of_ack.len = strlen(tim_of_ack.arr)) ) tim_of_acki = -1; strcpy((tim_on_site.arr) , site); if (!(tim_on_site.len = strlen(tim_on_site.arr)) ) tim_on_sitei = -1; printf("Call: %s Ack: %s Site: %s\n",call,ack,site); strncpy((description.arr) , des, 240); (description.arr) [239] = '\0'; if (!(description.len = strlen(description.arr)) ) descriptioni = -1; strncpy((resolution.arr) , res, 240); (resolution.arr) [239] = '\0'; if (!(resolution.len = strlen(resolution.arr)) ) resolutioni = -1; sqlsca(&sqlca); if ( !sqlusi[0] ) { sq004.sq004T[0] = (unsigned short)10; SQLTM[0] = (int)4; sqlbs2(&sq004.sq004N, sq004.sq004V, sq004.sq004L, sq004.sq004T, sq004.sq004I, &SQLTM[0], &sqlusi[0]); } sqlsch(&sqlusi[0]); sqlscc(&sqlcun[0]); sqltfl(&SQLTM[0], &SQLBT0); if ( !SQLTM[0] ) { SQLTM[0] = (int)16384; sqlopn(&SQLTM[0], &SQLBT3, &sqlvsn); SQLTM[0] = (int)403; sqlosq(sq005, &SQLTM[0]); sq006.sq006V[0] = (unsigned char *)&status.len; sq006.sq006L[0] = (unsigned int)12; sq006.sq006T[0] = (unsigned short)9; sq006.sq006I[0] = (unsigned short *)&statusi; sq006.sq006V[1] = (unsigned char *)&serial_num.len; sq006.sq006L[1] = (unsigned int)12; sq006.sq006T[1] = (unsigned short)9; sq006.sq006I[1] = (unsigned short *)&serial_numi; sq006.sq006V[2] = (unsigned char *)&report_by.len; sq006.sq006L[2] = (unsigned int)32; sq006.sq006T[2] = (unsigned short)9; sq006.sq006I[2] = (unsigned short *)&report_byi; sq006.sq006V[3] = (unsigned char *)&assign_to.len; sq006.sq006L[3] = (unsigned int)32; sq006.sq006T[3] = (unsigned short)9; sq006.sq006I[3] = (unsigned short *)&assign_toi; sq006.sq006V[4] = (unsigned char *)&cause.len; sq006.sq006L[4] = (unsigned int)17; sq006.sq006T[4] = (unsigned short)9; sq006.sq006I[4] = (unsigned short *)&causei; sq006.sq006V[5] = (unsigned char *)&os_name.len; sq006.sq006L[5] = (unsigned int)17; sq006.sq006T[5] = (unsigned short)9; sq006.sq006I[5] = (unsigned short *)&os_namei; sq006.sq006V[6] = (unsigned char *)&os_vers.len; sq006.sq006L[6] = (unsigned int)17; sq006.sq006T[6] = (unsigned short)9; sq006.sq006I[6] = (unsigned short *)&os_versi; sq006.sq006V[7] = (unsigned char *)&core.len; sq006.sq006L[7] = (unsigned int)82; sq006.sq006T[7] = (unsigned short)9; sq006.sq006I[7] = (unsigned short *)&corei; sq006.sq006V[8] = (unsigned char *)&vendor.len; sq006.sq006L[8] = (unsigned int)32; sq006.sq006T[8] = (unsigned short)9; sq006.sq006I[8] = (unsigned short *)&vendori; sq006.sq006V[9] = (unsigned char *)&device.len; sq006.sq006L[9] = (unsigned int)32; sq006.sq006T[9] = (unsigned short)9; sq006.sq006I[9] = (unsigned short *)&devicei; sq006.sq006V[10] = (unsigned char *)&tim_of_call.len; sq006.sq006L[10] = (unsigned int)22; sq006.sq006T[10] = (unsigned short)9; sq006.sq006I[10] = (unsigned short *)&tim_of_calli; sq006.sq006V[11] = (unsigned char *)&tim_of_ack.len; sq006.sq006L[11] = (unsigned int)22; sq006.sq006T[11] = (unsigned short)9; sq006.sq006I[11] = (unsigned short *)&tim_of_acki; sq006.sq006V[12] = (unsigned char *)&tim_on_site.len; sq006.sq006L[12] = (unsigned int)22; sq006.sq006T[12] = (unsigned short)9; sq006.sq006I[12] = (unsigned short *)&tim_on_sitei; sq006.sq006V[13] = (unsigned char *)&description.len; sq006.sq006L[13] = (unsigned int)242; sq006.sq006T[13] = (unsigned short)9; sq006.sq006I[13] = (unsigned short *)&descriptioni; sq006.sq006V[14] = (unsigned char *)&resolution.len; sq006.sq006L[14] = (unsigned int)242; sq006.sq006T[14] = (unsigned short)9; sq006.sq006I[14] = (unsigned short *)&resolutioni; sq006.sq006V[15] = (unsigned char *)&oir_number.len; sq006.sq006L[15] = (unsigned int)12; sq006.sq006T[15] = (unsigned short)9; sq006.sq006I[15] = (unsigned short *)0; sqlab2(&sq006.sq006N, sq006.sq006V, sq006.sq006L, sq006.sq006T, sq006.sq006I); } SQLTM[0] = (int)1; sqlexe(&SQLTM[0]); sqlwnr(); if (sqlca.sqlcode < 0) goto o_err; sqlsca(&sqlca); if ( !sqlusi[0] ) { sq007.sq007T[0] = (unsigned short)10; SQLTM[0] = (int)4; sqlbs2(&sq007.sq007N, sq007.sq007V, sq007.sq007L, sq007.sq007T, sq007.sq007I, &SQLTM[0], &sqlusi[0]); } sqlsch(&sqlusi[0]); SQLTM[0] = (int)0; sqlcom(&SQLTM[0]); if (sqlca.sqlcode < 0) goto o_err; return (char *) 0; o_err: rollback(); return value = oracle_error(); } char * new_oir() { int oir_number; static char oir_str[10]; char *oracle_error(); sqlsca(&sqlca); if ( !sqlusi[0] ) { sq008.sq008T[0] = (unsigned short)10; SQLTM[0] = (int)4; sqlbs2(&sq008.sq008N, sq008.sq008V, sq008.sq008L, sq008.sq008T, sq008.sq008I, &SQLTM[0], &sqlusi[0]); } sqlsch(&sqlusi[0]); sqlscc(&sqlcun[1]); sqltfl(&SQLTM[0], &SQLBT0); if ( !SQLTM[0] ) { SQLTM[0] = (int)16384; sqlopn(&SQLTM[0], &SQLBT3, &sqlvsn); SQLTM[0] = (int)30; sqlosq(sq009, &SQLTM[0]); sq010.sq010V[0] = (unsigned char *)&oir_number; sq010.sq010L[0] = (unsigned int)4; sq010.sq010T[0] = (unsigned short)3; sq010.sq010I[0] = (unsigned short *)0; sqlad2(&sq010.sq010N, sq010.sq010V, sq010.sq010L, sq010.sq010T, sq010.sq010I); } SQLTM[0] = (int)1; sqlexe(&SQLTM[0]); SQLTM[0] = (int)1; SQLTM[1] = (int)0; sqlfch(&SQLTM[0], &SQLTM[1]); if (sqlca.sqlcode < 0) goto o_error; printf("current max oir # == %d.\n",oir_number); ++oir_number; printf("We'll insert oir# == %d.\n",oir_number); sqlsca(&sqlca); if ( !sqlusi[0] ) { sq011.sq011T[0] = (unsigned short)10; SQLTM[0] = (int)4; sqlbs2(&sq011.sq011N, sq011.sq011V, sq011.sq011L, sq011.sq011T, sq011.sq011I, &SQLTM[0], &sqlusi[0]); } sqlsch(&sqlusi[0]); sqlscc(&sqlcun[2]); sqltfl(&SQLTM[0], &SQLBT0); if ( !SQLTM[0] ) { SQLTM[0] = (int)16384; sqlopn(&SQLTM[0], &SQLBT3, &sqlvsn); SQLTM[0] = (int)76; sqlosq(sq012, &SQLTM[0]); sq013.sq013V[0] = (unsigned char *)&oir_number; sq013.sq013L[0] = (unsigned int)4; sq013.sq013T[0] = (unsigned short)3; sq013.sq013I[0] = (unsigned short *)0; sqlab2(&sq013.sq013N, sq013.sq013V, sq013.sq013L, sq013.sq013T, sq013.sq013I); } SQLTM[0] = (int)1; sqlexe(&SQLTM[0]); if (sqlca.sqlcode < 0) goto o_error; sqlsca(&sqlca); if ( !sqlusi[0] ) { sq014.sq014T[0] = (unsigned short)10; SQLTM[0] = (int)4; sqlbs2(&sq014.sq014N, sq014.sq014V, sq014.sq014L, sq014.sq014T, sq014.sq014I, &SQLTM[0], &sqlusi[0]); } sqlsch(&sqlusi[0]); SQLTM[0] = (int)0; sqlcom(&SQLTM[0]); if (sqlca.sqlcode < 0) goto o_error; sprintf(oir_str, "%d", oir_number); return oir_str; o_error: oracle_error(); rollback(); return (char *)0; } char * delete_oir(oir) char *oir; { static char errmsg[256]; struct { unsigned short len; unsigned char arr[10]; } oir_number; char *oracle_error(); strcpy((oir_number.arr) ,oir); if (!(oir_number.len = strlen(oir_number.arr)) ) { strcpy(errmsg,"NULL oir id"); return errmsg; } sqlsca(&sqlca); if ( !sqlusi[0] ) { sq015.sq015T[0] = (unsigned short)10; SQLTM[0] = (int)4; sqlbs2(&sq015.sq015N, sq015.sq015V, sq015.sq015L, sq015.sq015T, sq015.sq015I, &SQLTM[0], &sqlusi[0]); } sqlsch(&sqlusi[0]); sqlscc(&sqlcun[3]); sqltfl(&SQLTM[0], &SQLBT0); if ( !SQLTM[0] ) { SQLTM[0] = (int)16384; sqlopn(&SQLTM[0], &SQLBT3, &sqlvsn); SQLTM[0] = (int)36; sqlosq(sq016, &SQLTM[0]); sq017.sq017V[0] = (unsigned char *)&oir_number.len; sq017.sq017L[0] = (unsigned int)12; sq017.sq017T[0] = (unsigned short)9; sq017.sq017I[0] = (unsigned short *)0; sqlab2(&sq017.sq017N, sq017.sq017V, sq017.sq017L, sq017.sq017T, sq017.sq017I); } SQLTM[0] = (int)1; sqlexe(&SQLTM[0]); sqlwnr(); if (sqlca.sqlcode < 0) goto o_error; sqlsca(&sqlca); if ( !sqlusi[0] ) { sq018.sq018T[0] = (unsigned short)10; SQLTM[0] = (int)4; sqlbs2(&sq018.sq018N, sq018.sq018V, sq018.sq018L, sq018.sq018T, sq018.sq018I, &SQLTM[0], &sqlusi[0]); } sqlsch(&sqlusi[0]); SQLTM[0] = (int)0; sqlcom(&SQLTM[0]); if (sqlca.sqlcode < 0) goto o_error; return (char *)0; o_error: strcpy(errmsg,oracle_error()); rollback(); return errmsg; }
wdp@ZEUS.CRAY.COM (Walter Poxon) (10/09/89)
======================================================================== We are using GCC 1.36 on Sun-3/50s under SunOS 3.5. Our compiler is configured thusly: aux-output.c: symbolic link to ./config/out-m68k.c config.h: symbolic link to ./config/xm-m68k.h md: symbolic link to ./config/m68k.md tm.h: symbolic link to ./config/tm-sun3os3nf.h While compiling the following source code, with no command-line parameters to gcc other than "-c", we get the error gcc: Program cc1 got fatal signal 6. I reported this bug last week and you sent me a patch to stor-layout.c (a new build_int()) which I have installed, yet the problem persists. The replacement of build_int() is the only mod we have made to 1.36 The preprocessed source file follows my .signature. It is output from an SQL preprocessor. -- Walter Poxon Domain: wdp@cray.com Cray Research Old style: wdp%cray.com@uc.msc.umn.edu 1440 Northland Dr. UUCP: uunet!cray!wdp Mendota Hts, MN 55120 USA Telephone: +1 612 681 3126 ======================================================================== # 1 "libts-ANSI.c" # 1 "/usr/include/stdio.h" 1 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(); # 3 "libts-ANSI.c" 2 # 1 "/usr/include/sys/errno.h" 1 # 4 "libts-ANSI.c" 2 # 1 "/usr/include/string.h" 1 extern char *strcpy(), *strncpy(), *strcat(), *strncat(), *strchr(), *strrchr(), *strpbrk(), *strtok(); extern int strcmp(), strncmp(), strlen(), strspn(), strcspn(); # 5 "libts-ANSI.c" 2 # 1 "libts.h" 1 typedef struct ts { char tes_name[21]; char tes_title[241]; char ent_code[10]; char sui_code[10]; char author[30]; char copilot[30]; char expert[30]; char des_code[20]; char lan_code[10]; char tes_case_total[10]; char tes_source[81]; char tes_binary[81]; char pro_first[30]; char pro_last[30]; char tes_archive[16]; char tes_cpu_type[11]; char tes_real_time[21]; } test_source_table_entry; # 6 "libts-ANSI.c" 2 extern int errno; struct sqlca { char sqlcaid[8]; long sqlabc; long sqlcode; struct { unsigned short sqlerrml; char sqlerrmc[70]; } sqlerrm; char sqlerrp[8]; long sqlerrd[6]; char sqlwarn[8]; char sqlext[8]; }; struct sqlca sqlca # 93 "libts-ANSI.c" ; static struct { unsigned int sq001N; unsigned char *sq001V[1]; unsigned int sq001L[1]; unsigned short sq001T[1]; unsigned short *sq001I[1]; } sq001 = {1}; static char sq002[52] = "SELECT TES_NAME FROM TEST_SOURCE WHERE TES_NAME=:b1" ; static struct { unsigned int sq003N; unsigned char *sq003V[1]; unsigned int sq003L[1]; unsigned short sq003T[1]; unsigned short *sq003I[1]; } sq003 = {1}; static struct { unsigned int sq004N; unsigned char *sq004V[1]; unsigned int sq004L[1]; unsigned short sq004T[1]; unsigned short *sq004I[1]; } sq004 = {1}; static struct { unsigned int sq005N; unsigned char *sq005V[1]; unsigned int sq005L[1]; unsigned short sq005T[1]; unsigned short *sq005I[1]; } sq005 = {1}; static char sq006[35] = "INSERT INTO TES_SOURCE VALUES(:b1)" ; static struct { unsigned int sq007N; unsigned char *sq007V[1]; unsigned int sq007L[1]; unsigned short sq007T[1]; unsigned short *sq007I[1]; } sq007 = {1}; static struct { unsigned int sq008N; unsigned char *sq008V[1]; unsigned int sq008L[1]; unsigned short sq008T[1]; unsigned short *sq008I[1]; } sq008 = {1}; static char sq009[320] = "UPDATE TEST_SOURCE SET TES_TITLE=:b1,ENT_CODE=:b2,SUI_CODE=:b3,EMP_ID_AUTHOR=:b4,EMP_ID_COPILOT=:b5,EMP_ID_EXPERT=:b6,DES_CODE=:b7,LAN_CODE=:b8,TES_CASE_TOTAL=:b9,TES_SOURCE=:b10,TES_BINARY=:b11,PRO_ID_FIRST=:b12:i12,PRO_ID_LAST=:b13:i13,TES_ARCHIVE=:b14 :i14,TES_CPU_TYPE=:b15:i15,TES_REAL_TIME=:b16 WHERE TES_NAME=:b17" ; static struct { unsigned int sq010N; unsigned char *sq010V[17]; unsigned int sq010L[17]; unsigned short sq010T[17]; unsigned short *sq010I[17]; } sq010 = {17}; static struct { unsigned int sq011N; unsigned char *sq011V[1]; unsigned int sq011L[1]; unsigned short sq011T[1]; unsigned short *sq011I[1]; } sq011 = {1}; static struct { unsigned int sq012N; unsigned char *sq012V[1]; unsigned int sq012L[1]; unsigned short sq012T[1]; unsigned short *sq012I[1]; } sq012 = {1}; static char sq013[684] = "SELECT TES_TITLE,ENT_CODE,SUI_CODE,AUTHOR.EMP_FIRST_NAME,AUTHOR.EMP_LAST_NAME,COPILOT.EMP_FIRST_NAME,COPILOT.EMP_LAST_NAME,EXPERT.EMP_FIRST_NAME,EXPERT.EMP_LAST_NAME,DES_CODE,LAN_CODE,TES_CASE_TOTAL,TES_SOURCE,TES_BINARY,LAST.PRO_NAME,LAST.PRO_RELEASE,LA ST.PRO_BUGFIX,FIRST.PRO_NAME,FIRST.PRO_RELEASE,FIRST.PRO_BUGFIX,TES_ARCHIVE,TES_CPU_TYPE,TES_REAL_TIME)FROM TEST_SOURCE,EMPLOYEE AUTHOR,EMPLOYEE COPILOT,EMPLOYEE EXPERT,PRODUCT FIRST,PRODUCT LAST WHERE TES_NAME=:b1 AND AUTHOR.EMP_ID=TEST_SOURCE.EMP_ID_AUT HOR AND COPILOT.EMP_ID=TEST_SOURCE.EMP_ID_COPILOT AND EXPERT.EMP_ID=TEST_SOURCE.EMP_ID_EXPER AND FIRST.PRO_ID=TEST_SOURCE.PRO_ID_FIRST AND LAST.PRO_ID=TEST_SOURCE.PRO_ID_LAST" # 191 "libts-ANSI.c" ; static struct { unsigned int sq014N; unsigned char *sq014V[1]; unsigned int sq014L[1]; unsigned short sq014T[1]; unsigned short *sq014I[1]; } sq014 = {1}; static struct { unsigned int sq015N; unsigned char *sq015V[23]; unsigned int sq015L[23]; unsigned short sq015T[23]; unsigned short *sq015I[23]; } sq015 = {23}; static int SQLTM[8]; static int sqlcun[4] = { 0,0,0,0}; static int sqlusi[1] = { 0}; static int SQLBT0 = 1; static int SQLBT1 = 2; static int SQLBT2 = 4; static int SQLBT3 = 9; static unsigned int sqlvsn = 10110; extern sqlab2(); extern sqlad2(); extern sqlbs2(); extern sqlcom(); extern sqlexe(); extern sqlfch(); extern sqlopn(); extern sqlosq(); extern sqlsca(); extern sqlscc(); extern sqlsch(); extern sqltfl(); extern sqlwnr(); typedef struct { unsigned short len; unsigned char *arr; } oracle_varchar; char * insert_into_test_source(struct ts *ts) { struct { unsigned short len; unsigned char arr[0]; } tes_name; struct { unsigned short len; unsigned char arr[0]; } duplicate; static char errmsg[80]; static char *value, *update_test_source(struct ts *), *o_error(void); sqlsca(&sqlca); if ( !sqlusi[0] ) { sq001.sq001T[0] = (unsigned short)10; SQLTM[0] = (int)4; sqlbs2(&sq001.sq001N, sq001.sq001V, sq001.sq001L, sq001.sq001T, sq001.sq001I, &SQLTM[0], &sqlusi[0]); } sqlsch(&sqlusi[0]); sqlscc(&sqlcun[0]); sqltfl(&SQLTM[0], &SQLBT0); if ( !SQLTM[0] ) { SQLTM[0] = (int)16384; sqlopn(&SQLTM[0], &SQLBT3, &sqlvsn); SQLTM[0] = (int)51; sqlosq(sq002, &SQLTM[0]); sq003.sq003V[0] = (unsigned char *)&tes_name.len; sq003.sq003L[0] = (unsigned int)strlen(tes_name); sq003.sq003T[0] = (unsigned short)9; sq003.sq003I[0] = (unsigned short *)0; sqlab2(&sq003.sq003N, sq003.sq003V, sq003.sq003L, sq003.sq003T, sq003.sq003I); sq004.sq004V[0] = (unsigned char *)&duplicate.len; sq004.sq004L[0] = (unsigned int)strlen(duplicate); sq004.sq004T[0] = (unsigned short)9; sq004.sq004I[0] = (unsigned short *)0; sqlad2(&sq004.sq004N, sq004.sq004V, sq004.sq004L, sq004.sq004T, sq004.sq004I); } SQLTM[0] = (int)1; sqlexe(&SQLTM[0]); SQLTM[0] = (int)1; SQLTM[1] = (int)0; sqlfch(&SQLTM[0], &SQLTM[1]); if (sqlca.sqlcode == 1403) goto okay; if (sqlca.sqlcode < 0) goto o_err; strcpy(errmsg, "insert_ts halted: a record for %s already exists in ut.test_source\n", ts->tes_name); return errmsg; okay: sqlsca(&sqlca); if ( !sqlusi[0] ) { sq005.sq005T[0] = (unsigned short)10; SQLTM[0] = (int)4; sqlbs2(&sq005.sq005N, sq005.sq005V, sq005.sq005L, sq005.sq005T, sq005.sq005I, &SQLTM[0], &sqlusi[0]); } sqlsch(&sqlusi[0]); sqlscc(&sqlcun[1]); sqltfl(&SQLTM[0], &SQLBT0); if ( !SQLTM[0] ) { SQLTM[0] = (int)16384; sqlopn(&SQLTM[0], &SQLBT3, &sqlvsn); SQLTM[0] = (int)34; sqlosq(sq006, &SQLTM[0]); sq007.sq007V[0] = (unsigned char *)&tes_name.len; sq007.sq007L[0] = (unsigned int)strlen(tes_name); sq007.sq007T[0] = (unsigned short)9; sq007.sq007I[0] = (unsigned short *)0; sqlab2(&sq007.sq007N, sq007.sq007V, sq007.sq007L, sq007.sq007T, sq007.sq007I); } SQLTM[0] = (int)1; sqlexe(&SQLTM[0]); if (sqlca.sqlcode < 0) goto o_err; if (value = update_test_source(ts)) return value; o_err: rollback(); return value = o_error(); } char * update_test_source(struct ts *ts) { struct { unsigned short len; unsigned char arr[21]; } tes_name; struct { unsigned short len; unsigned char arr[241]; } tes_title; struct { unsigned short len; unsigned char arr[10]; } ent_code; struct { unsigned short len; unsigned char arr[10]; } sui_code; struct { unsigned short len; unsigned char arr[10]; } emp_id_author; struct { unsigned short len; unsigned char arr[10]; } emp_id_copilot; struct { unsigned short len; unsigned char arr[10]; } emp_id_expert; struct { unsigned short len; unsigned char arr[20]; } des_code; struct { unsigned short len; unsigned char arr[10]; } lan_code; struct { unsigned short len; unsigned char arr[10]; } tes_case_total; struct { unsigned short len; unsigned char arr[81]; } tes_source; struct { unsigned short len; unsigned char arr[81]; } tes_binary; struct { unsigned short len; unsigned char arr[10]; } pro_id_first; struct { unsigned short len; unsigned char arr[10]; } pro_id_last; struct { unsigned short len; unsigned char arr[16]; } tes_archive; struct { unsigned short len; unsigned char arr[11]; } tes_cpu_type; struct { unsigned short len; unsigned char arr[21]; } tes_real_time; short pro_id_firsti; short pro_id_lasti; short tes_archivei; short tes_cpu_typei; static char *err, errmsg[80]; char *oracle_error(void), *loadOracleVar(); char *getempid(char *), *getproid(char *); char *check_sui_code(char *), *check_ent_code(char *); char *check_des_code(char *), *check_lan_code(char *); char *tmp; pro_id_firsti = pro_id_lasti = tes_archivei = tes_cpu_typei = 0; if (err=loadOracleVar("tes_name",&tes_name,ts->tes_name,(int *)0)) return err; if (err=loadOracleVar("tes_title",&tes_title,ts->tes_title,(int *)0)) return err; if (check_ent_code(ts->ent_code) == 0 ) { sprintf(errmsg, "update_ts halted: %s is an invalid entity code\n", ts->ent_code); return errmsg; } if (err=loadOracleVar("ent_code",&ent_code,ts->ent_code,(int *)0)) return err; if (check_sui_code(ts->sui_code) == 0 ) { sprintf(errmsg, "update_ts halted: %s is an invalid suite code\n", ts->sui_code); return errmsg; } if (err=loadOracleVar("sui_code",&sui_code,ts->sui_code,(int *)0)) return err; if ((tmp = getempid(ts->author)) == 0 ) { sprintf(errmsg,"update_ts halted: %s is not a valid author",ts->author); return errmsg; } else if (err=loadOracleVar("emp_id_author",&emp_id_author,tmp,(int *)0)) return err; if ((tmp = getempid(ts->copilot)) == 0 ) { sprintf(errmsg,"update_ts halted: %s is not a valid copilot",ts->copilot); return errmsg; } else if (err=loadOracleVar("emp_id_copilot",&emp_id_copilot,tmp,(int *)0)) return err; if ((tmp = getempid(ts->expert)) == 0 ) { sprintf(errmsg,"update_ts halted: %s is not a valid expert",ts->expert); return errmsg; } else if (err=loadOracleVar("emp_id_expert",&emp_id_expert,tmp,(int *)0)) return err; if (check_des_code(ts->des_code) == 0 ) { sprintf(errmsg,"update_ts halted: %s is not a valid des_code\n", ts->des_code); return errmsg; } if (err=loadOracleVar("des_code",&des_code,ts->des_code,(int *)0)) return err; if (check_lan_code(ts->lan_code) == 0 ) { sprintf(errmsg,"update_ts halted: %s is not a valid lan_code\n", ts->lan_code); return errmsg; } if (err=loadOracleVar("lan_code",&lan_code,ts->lan_code,(int *)0)) return err; if (err=loadOracleVar("tes_case_total",&tes_case_total,ts->tes_case_total, (int *)0)) return err; if (err=loadOracleVar("tes_source",&tes_source,ts->tes_source,(int *)0)) return err; if (err=loadOracleVar("tes_binary",&tes_binary,ts->tes_binary,(int *)0)) return err; if ((tmp = getproid(ts->pro_first)) == 0 ) { sprintf(errmsg,"update_ts halted: %s isn't a valid product",ts->pro_first); return errmsg; } else if (err=loadOracleVar("pro_id_first",&pro_id_first,tmp,&pro_id_firsti)) return err; if ((tmp = getproid(ts->pro_last)) == 0 ) { sprintf(errmsg,"update_ts halted: %s isn't a valid product",ts->pro_last); return errmsg; } else if (err=loadOracleVar("pro_id_last",&pro_id_last,tmp,&pro_id_lasti)) return err; if (err=loadOracleVar("tes_archive",&tes_archive,ts->tes_archive, &tes_archivei)) return err; if (err=loadOracleVar("tes_cpu_type",&tes_cpu_type,ts->tes_cpu_type, (int *)0)) return err; if (err=loadOracleVar("tes_real_time",&tes_real_time,ts->tes_real_time, (int *)0)) return err; sqlsca(&sqlca); if ( !sqlusi[0] ) { sq008.sq008T[0] = (unsigned short)10; SQLTM[0] = (int)4; sqlbs2(&sq008.sq008N, sq008.sq008V, sq008.sq008L, sq008.sq008T, sq008.sq008I, &SQLTM[0], &sqlusi[0]); } sqlsch(&sqlusi[0]); sqlscc(&sqlcun[2]); sqltfl(&SQLTM[0], &SQLBT0); if ( !SQLTM[0] ) { SQLTM[0] = (int)16384; sqlopn(&SQLTM[0], &SQLBT3, &sqlvsn); SQLTM[0] = (int)319; sqlosq(sq009, &SQLTM[0]); sq010.sq010V[0] = (unsigned char *)&tes_title.len; sq010.sq010L[0] = (unsigned int)243; sq010.sq010T[0] = (unsigned short)9; sq010.sq010I[0] = (unsigned short *)0; sq010.sq010V[1] = (unsigned char *)&ent_code.len; sq010.sq010L[1] = (unsigned int)12; sq010.sq010T[1] = (unsigned short)9; sq010.sq010I[1] = (unsigned short *)0; sq010.sq010V[2] = (unsigned char *)&sui_code.len; sq010.sq010L[2] = (unsigned int)12; sq010.sq010T[2] = (unsigned short)9; sq010.sq010I[2] = (unsigned short *)0; sq010.sq010V[3] = (unsigned char *)&emp_id_author.len; sq010.sq010L[3] = (unsigned int)12; sq010.sq010T[3] = (unsigned short)9; sq010.sq010I[3] = (unsigned short *)0; sq010.sq010V[4] = (unsigned char *)&emp_id_copilot.len; sq010.sq010L[4] = (unsigned int)12; sq010.sq010T[4] = (unsigned short)9; sq010.sq010I[4] = (unsigned short *)0; sq010.sq010V[5] = (unsigned char *)&emp_id_expert.len; sq010.sq010L[5] = (unsigned int)12; sq010.sq010T[5] = (unsigned short)9; sq010.sq010I[5] = (unsigned short *)0; sq010.sq010V[6] = (unsigned char *)&des_code.len; sq010.sq010L[6] = (unsigned int)22; sq010.sq010T[6] = (unsigned short)9; sq010.sq010I[6] = (unsigned short *)0; sq010.sq010V[7] = (unsigned char *)&lan_code.len; sq010.sq010L[7] = (unsigned int)12; sq010.sq010T[7] = (unsigned short)9; sq010.sq010I[7] = (unsigned short *)0; sq010.sq010V[8] = (unsigned char *)&tes_case_total.len; sq010.sq010L[8] = (unsigned int)12; sq010.sq010T[8] = (unsigned short)9; sq010.sq010I[8] = (unsigned short *)0; sq010.sq010V[9] = (unsigned char *)&tes_source.len; sq010.sq010L[9] = (unsigned int)83; sq010.sq010T[9] = (unsigned short)9; sq010.sq010I[9] = (unsigned short *)0; sq010.sq010V[10] = (unsigned char *)&tes_binary.len; sq010.sq010L[10] = (unsigned int)83; sq010.sq010T[10] = (unsigned short)9; sq010.sq010I[10] = (unsigned short *)0; sq010.sq010V[11] = (unsigned char *)&pro_id_first.len; sq010.sq010L[11] = (unsigned int)12; sq010.sq010T[11] = (unsigned short)9; sq010.sq010I[11] = (unsigned short *)&pro_id_firsti; sq010.sq010V[12] = (unsigned char *)&pro_id_last.len; sq010.sq010L[12] = (unsigned int)12; sq010.sq010T[12] = (unsigned short)9; sq010.sq010I[12] = (unsigned short *)&pro_id_lasti; sq010.sq010V[13] = (unsigned char *)&tes_archive.len; sq010.sq010L[13] = (unsigned int)18; sq010.sq010T[13] = (unsigned short)9; sq010.sq010I[13] = (unsigned short *)&tes_archivei; sq010.sq010V[14] = (unsigned char *)&tes_cpu_type.len; sq010.sq010L[14] = (unsigned int)13; sq010.sq010T[14] = (unsigned short)9; sq010.sq010I[14] = (unsigned short *)&tes_cpu_typei; sq010.sq010V[15] = (unsigned char *)&tes_real_time.len; sq010.sq010L[15] = (unsigned int)23; sq010.sq010T[15] = (unsigned short)9; sq010.sq010I[15] = (unsigned short *)0; sq010.sq010V[16] = (unsigned char *)&tes_name.len; sq010.sq010L[16] = (unsigned int)23; sq010.sq010T[16] = (unsigned short)9; sq010.sq010I[16] = (unsigned short *)0; sqlab2(&sq010.sq010N, sq010.sq010V, sq010.sq010L, sq010.sq010T, sq010.sq010I); } SQLTM[0] = (int)1; sqlexe(&SQLTM[0]); sqlwnr(); if (sqlca.sqlcode == 1403) goto o_err; if (sqlca.sqlcode < 0) goto o_err; sqlsca(&sqlca); if ( !sqlusi[0] ) { sq011.sq011T[0] = (unsigned short)10; SQLTM[0] = (int)4; sqlbs2(&sq011.sq011N, sq011.sq011V, sq011.sq011L, sq011.sq011T, sq011.sq011I, &SQLTM[0], &sqlusi[0]); } sqlsch(&sqlusi[0]); SQLTM[0] = (int)0; sqlcom(&SQLTM[0]); if (sqlca.sqlcode < 0) goto o_err; return (char *) 0; o_err: rollback(); return err = oracle_error(); } char * loadOracleVars(char *col_nam, oracle_varchar *v, char *s, int *i) { static char errmsg[80]; strcpy(v->arr,s); if ((v->len = strlen(v->arr)) == 0) if (!i) { sprintf(errmsg,"update_ts halted: null %s\n", col_nam); return errmsg; } else *i = -1; return (char *)0; } struct ts * select_from_test_source(char *tes_name) { struct { unsigned short len; unsigned char arr[21]; } tes_name; struct { unsigned short len; unsigned char arr[241]; } tes_title; struct { unsigned short len; unsigned char arr[10]; } ent_code; struct { unsigned short len; unsigned char arr[10]; } sui_code; struct { unsigned short len; unsigned char arr[20]; } author_first; struct { unsigned short len; unsigned char arr[20]; } author_last; struct { unsigned short len; unsigned char arr[20]; } copilot_first; struct { unsigned short len; unsigned char arr[20]; } copilot_last; struct { unsigned short len; unsigned char arr[20]; } expert_first; struct { unsigned short len; unsigned char arr[20]; } expert_last; struct { unsigned short len; unsigned char arr[20]; } des_code; struct { unsigned short len; unsigned char arr[10]; } lan_code; struct { unsigned short len; unsigned char arr[10]; } tes_case_total; struct { unsigned short len; unsigned char arr[81]; } tes_source; struct { unsigned short len; unsigned char arr[81]; } tes_binary; struct { unsigned short len; unsigned char arr[20]; } first_pro_name; struct { unsigned short len; unsigned char arr[10]; } first_pro_release; struct { unsigned short len; unsigned char arr[10]; } first_pro_bugfix; struct { unsigned short len; unsigned char arr[20]; } last_pro_name; struct { unsigned short len; unsigned char arr[10]; } last_pro_release; struct { unsigned short len; unsigned char arr[10]; } last_pro_bugfix; struct { unsigned short len; unsigned char arr[16]; } tes_archive; short tes_archivei; struct { unsigned short len; unsigned char arr[11]; } tes_cpu_type; short tes_cpu_typei; struct { unsigned short len; unsigned char arr[21]; } tes_real_time; short pro_id_firsti; short pro_id_lasti; static char *err, errmsg[80]; char *oracle_error(); sqlsca(&sqlca); if ( !sqlusi[0] ) { sq012.sq012T[0] = (unsigned short)10; SQLTM[0] = (int)4; sqlbs2(&sq012.sq012N, sq012.sq012V, sq012.sq012L, sq012.sq012T, sq012.sq012I, &SQLTM[0], &sqlusi[0]); } sqlsch(&sqlusi[0]); sqlscc(&sqlcun[3]); sqltfl(&SQLTM[0], &SQLBT0); if ( !SQLTM[0] ) { SQLTM[0] = (int)16384; sqlopn(&SQLTM[0], &SQLBT3, &sqlvsn); SQLTM[0] = (int)683; sqlosq(sq013, &SQLTM[0]); sq014.sq014V[0] = (unsigned char *)&tes_name.len; sq014.sq014L[0] = (unsigned int)23; sq014.sq014T[0] = (unsigned short)9; sq014.sq014I[0] = (unsigned short *)0; sqlab2(&sq014.sq014N, sq014.sq014V, sq014.sq014L, sq014.sq014T, sq014.sq014I); sq015.sq015V[0] = (unsigned char *)&tes_title.len; sq015.sq015L[0] = (unsigned int)243; sq015.sq015T[0] = (unsigned short)9; sq015.sq015I[0] = (unsigned short *)0; sq015.sq015V[1] = (unsigned char *)&ent_code.len; sq015.sq015L[1] = (unsigned int)12; sq015.sq015T[1] = (unsigned short)9; sq015.sq015I[1] = (unsigned short *)0; sq015.sq015V[2] = (unsigned char *)&sui_code.len; sq015.sq015L[2] = (unsigned int)12; sq015.sq015T[2] = (unsigned short)9; sq015.sq015I[2] = (unsigned short *)0; sq015.sq015V[3] = (unsigned char *)&author_first.len; sq015.sq015L[3] = (unsigned int)22; sq015.sq015T[3] = (unsigned short)9; sq015.sq015I[3] = (unsigned short *)0; sq015.sq015V[4] = (unsigned char *)&author_last.len; sq015.sq015L[4] = (unsigned int)22; sq015.sq015T[4] = (unsigned short)9; sq015.sq015I[4] = (unsigned short *)0; sq015.sq015V[5] = (unsigned char *)&copilot_first.len; sq015.sq015L[5] = (unsigned int)22; sq015.sq015T[5] = (unsigned short)9; sq015.sq015I[5] = (unsigned short *)0; sq015.sq015V[6] = (unsigned char *)&copilot_last.len; sq015.sq015L[6] = (unsigned int)22; sq015.sq015T[6] = (unsigned short)9; sq015.sq015I[6] = (unsigned short *)0; sq015.sq015V[7] = (unsigned char *)&expert_first.len; sq015.sq015L[7] = (unsigned int)22; sq015.sq015T[7] = (unsigned short)9; sq015.sq015I[7] = (unsigned short *)0; sq015.sq015V[8] = (unsigned char *)&expert_last.len; sq015.sq015L[8] = (unsigned int)22; sq015.sq015T[8] = (unsigned short)9; sq015.sq015I[8] = (unsigned short *)0; sq015.sq015V[9] = (unsigned char *)&des_code.len; sq015.sq015L[9] = (unsigned int)22; sq015.sq015T[9] = (unsigned short)9; sq015.sq015I[9] = (unsigned short *)0; sq015.sq015V[10] = (unsigned char *)&lan_code.len; sq015.sq015L[10] = (unsigned int)12; sq015.sq015T[10] = (unsigned short)9; sq015.sq015I[10] = (unsigned short *)0; sq015.sq015V[11] = (unsigned char *)&tes_case_total.len; sq015.sq015L[11] = (unsigned int)12; sq015.sq015T[11] = (unsigned short)9; sq015.sq015I[11] = (unsigned short *)0; sq015.sq015V[12] = (unsigned char *)&tes_source.len; sq015.sq015L[12] = (unsigned int)83; sq015.sq015T[12] = (unsigned short)9; sq015.sq015I[12] = (unsigned short *)0; sq015.sq015V[13] = (unsigned char *)&tes_binary.len; sq015.sq015L[13] = (unsigned int)83; sq015.sq015T[13] = (unsigned short)9; sq015.sq015I[13] = (unsigned short *)0; sq015.sq015V[14] = (unsigned char *)&first_pro_name.len; sq015.sq015L[14] = (unsigned int)22; sq015.sq015T[14] = (unsigned short)9; sq015.sq015I[14] = (unsigned short *)0; sq015.sq015V[15] = (unsigned char *)&first_pro_release.len; sq015.sq015L[15] = (unsigned int)12; sq015.sq015T[15] = (unsigned short)9; sq015.sq015I[15] = (unsigned short *)0; sq015.sq015V[16] = (unsigned char *)&first_pro_bugfix.len; sq015.sq015L[16] = (unsigned int)12; sq015.sq015T[16] = (unsigned short)9; sq015.sq015I[16] = (unsigned short *)0; sq015.sq015V[17] = (unsigned char *)&last_pro_name.len; sq015.sq015L[17] = (unsigned int)22; sq015.sq015T[17] = (unsigned short)9; sq015.sq015I[17] = (unsigned short *)0; sq015.sq015V[18] = (unsigned char *)&last_pro_release.len; sq015.sq015L[18] = (unsigned int)12; sq015.sq015T[18] = (unsigned short)9; sq015.sq015I[18] = (unsigned short *)0; sq015.sq015V[19] = (unsigned char *)&last_pro_bugfix.len; sq015.sq015L[19] = (unsigned int)12; sq015.sq015T[19] = (unsigned short)9; sq015.sq015I[19] = (unsigned short *)0; sq015.sq015V[20] = (unsigned char *)&tes_archive.len; sq015.sq015L[20] = (unsigned int)18; sq015.sq015T[20] = (unsigned short)9; sq015.sq015I[20] = (unsigned short *)0; sq015.sq015V[21] = (unsigned char *)&tes_cpu_type.len; sq015.sq015L[21] = (unsigned int)13; sq015.sq015T[21] = (unsigned short)9; sq015.sq015I[21] = (unsigned short *)0; sq015.sq015V[22] = (unsigned char *)&tes_real_time.len; sq015.sq015L[22] = (unsigned int)23; sq015.sq015T[22] = (unsigned short)9; sq015.sq015I[22] = (unsigned short *)0; sqlad2(&sq015.sq015N, sq015.sq015V, sq015.sq015L, sq015.sq015T, sq015.sq015I); } SQLTM[0] = (int)1; sqlexe(&SQLTM[0]); SQLTM[0] = (int)1; SQLTM[1] = (int)0; sqlfch(&SQLTM[0], &SQLTM[1]); if (sqlca.sqlcode == 1403) goto no_ts; if (sqlca.sqlcode < 0) goto o_error; }
rohit@MIPS.COM (Rohit Chandra) (01/18/90)
(sorry if you get this twice - mailer problems.) I am trying to compile g++ using gcc on a MIPS M-2000 running RISC/OS 4.0, (with one change in va-mips.h) when the compiler crashes with the message: Program cc1 got fatal signal 4, while trying to compile the file expr.c Details follow: Version: gcc version 1.36 Input file: expr.c from gcc version 1.36.1- (based on GCC 1.36) with the include files in that version of g++. (with one change in va-mips.h, described below). Options: -c -DGATHER_STATISTICS -Wunused -DUSE_COLLECT -DEXTENDED_COFF -DFASCIST_ASSEMBLER -I. -I./config tm.h = tm-mips-bsd.h md = mips.md [I have made some changes in the machine description files. I *believe* these should not affect the bug, and hope you can still reproduce it.] Machine = mips m2000-8, Running RISC/OS 4.0 Error: The compiler dies with the following message- > gcc: Program cc1 got fatal signal 4. > *** Error code 1 > > Stop. To Reproduce the bug: --------------------- I am CHANGING the definitions in va-mips.h, included through gvarargs.h in the input file expr.c. Specifically, I am changing (a) typedef struct { int pnt; char *stack; double *fpregs; } va_list ; to: (b) typdef char *va_list; Compilation goes through fine for definition (a) - the original one - and the bug appears for definition (b) of va_list. [I also make the corresponding changes in the related macros va_alist, va_dcl, va_start, va_arg, va_end, but they do not affect the bug since the bug remains even if I remove all uses of these macros from the input file expr.c ] Therefore, to reproduce the bug, all you should need to do is: change the typedef of va_list in va-mips.h to typedef char* va_list; and perhaps comment out the *statements* (not the declarations) within emit_library_call in expr.c since they use the macros va_start, va_arg, va_end and therefore depend on the typedef of va_list. Description of the bug: ----------------------- The error occurs while parsing the declaration CUMULATIVE_ARGS args_so_far; in the function expand_call in the file expr.c. CUMULATIVE_ARGS args_so_far is defined to be #define CUMULATIVE_ARGS struct { \ enum arg_state arg_rec_state;\ int restype,arg_num;\ } The stack at that point (while debugging cc1) is: (dbx) run expr.cpp init_comparisons init_expr enqueue_insn protect_from_queue queued_subexp_p emit_queue init_queue convert_move convert_to_mode integer_mode_p move_by_pieces move_by_pieces_ninsns move_by_pieces_1 emit_block_move move_block_to_reg move_block_from_reg use_regs clear_storage emit_move_insn push_block gen_push_operand emit_push_insn emit_library_call expand_assignment store_expr store_constructor store_field force_operand save_noncopied_parts init_noncopied_parts validate_subtarget expand_expr expr.c: In function expand_expr: expr.c:3014: warning:assignment of pointer from integer lacks a cast expr.c:3024: warning:assignment of pointer from integer lacks a cast expand_builtin expand_increment preexpand_calls prepare_call_address emit_call_1 init_pending_stack_adjust clear_pending_stack_adjust do_pending_stack_adjust expand_cleanups_to expand_call Illegal instruction [abort.abort:22 ,0x4ac920] Source not available (dbx) where > 0 abort.abort(0x100243c8, 0x10024458, 0x7fff9c98, 0x7fff999c, 0x42e550) ["ab ort.s":22, 0x4ac920] 1 .block44 ["expr.c":3122, 0x4308bc] 2 expand_expr(exp = 0x10024900, target = 0x10024ec8, tmode = VOIDmode, modif ier = EXPAND_NORMAL) ["expr.c":3122, 0x4308bc] 3 store_expr(exp = 0x10024900, target = 0x10024ec8, suggest_reg = 0) ["expr. c":1823, 0x42d07c] 4 .block26 ["expr.c":2268, 0x42e24c] 5 expand_expr(exp = 0x10024ea8, target = (nil), tmode = VOIDmode, modifier = EXPAND_NORMAL) ["expr.c":2268, 0x42e24c] 6 variable_size(0x7fff9c9a, 0x0, 0x40b064, 0x1001e510, 0xffffff8c) ["stor-la yout.c":161, 0x42031c] 7 layout_type(0x40bad4, 0x0, 0x10024ea8, 0x0, 0x74) ["stor-layout.c":929, 0x 4222bc] 8 finish_struct(0x10024d50, 0x10123a88, 0x10020828, 0x0, 0x0) ["c-decl.c":32 05, 0x40c17c] 9 yyparse(0x10008f74, 0x2000, 0xa, 0x0, 0x2) ["c-parse.tab.c":773, 0x401864] 10 compile_file(0x0, 0x0, 0x0, 0x0, 0x0) ["toplev.c":1113, 0x41708c] 11 main(0x7fff9f74, 0x7fff9f80, 0x0, 0x0, 0x0) ["toplev.c":1981, 0x418dcc] (dbx) It is somehow related to the declarations register va_list p; ... CUMULATIVE_ARGS args_so_far; in the function emit_library_call, the only function to use varargs in the entire file. (emit_library_call occurs before the function expand_call in expr.c). If I move the declaration of CUMULATIVE_ARGS within emit_library_call from: register va_list p; ... CUMULATIVE_ARGS args_so_far; to: CUMULATIVE_ARGS args_so_far; register va_list p; ... (same declarations in the original order) then the error goes away. Although this message is long, I wonder if I have described the bug well. I will be happy to answer any more questions that you have. You can reach me at: rohit@mips.com, or rohit@cs.stanford.edu 408-991-6545 (work)