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.eduwdp@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)