arm-coff bug report
gyoung yun cho
gycho@dolphin.pknu.ac.kr
Fri Sep 19 02:10:00 GMT 1997
I tested egcs snapshots on LINUX slackware 3.3 to make arm-coff cross complier.
I always get error message as following.
.... egcs-970917/gcc/f/runtime/libI77/lread.c....
xgcc: Internal compiler error : program cc1 got fatal signal 6
My tool chain is :
============================================================================
/usr/local/src/binutils-2.8.1
/usr/local/src/egcs-970917
/usr/local/src/newlib-1.8.0
/usr/local/src/build
My script file at /usr/local/src is
=============================================================================
prefix=/usr/local
host=i386-*-linux
target=arm-coff
#
cd build
#
../binutils-2.8.1/configure --host=$host --target=$target --prefix=$prefix -v
make all
make install
rm -rf *
#
# Make cross tool include dir
#
mkdir $prefix/$target/include
cp -r ../newlib-1.8.0/newlib/libc/include/* $prefix/$target/include
#
../egcs-970917/configure --host=$host --target=$target --prefix=$prefix \
--with-gnu-as --with-gnu-ld -v
make all
=============================================================================
I added "-save-temps" at ALL_CFLAGS of gcc/f/runtime/libI77/Makefile.in,
and got lread.i as following
=============================================================================
# 1 "/usr/local/src/egcs-970917/gcc/f/runtime/libI77/lread.c"
# 1 "/usr/local/arm-coff/include/ctype.h" 1 3
# 1 "/usr/local/arm-coff/include/_ansi.h" 1 3
# 1 "/usr/local/arm-coff/include/sys/config.h" 1 3
# 14 "/usr/local/arm-coff/include/sys/config.h" 3
# 25 "/usr/local/arm-coff/include/sys/config.h" 3
# 44 "/usr/local/arm-coff/include/sys/config.h" 3
typedef int __int32_t;
typedef unsigned int __uint32_t;
# 15 "/usr/local/arm-coff/include/_ansi.h" 2 3
# 61 "/usr/local/arm-coff/include/_ansi.h" 3
# 7 "/usr/local/arm-coff/include/ctype.h" 2 3
int isalnum (int c) ;
int isalpha (int c) ;
int iscntrl (int c) ;
int isdigit (int c) ;
int isgraph (int c) ;
int islower (int c) ;
int isprint (int c) ;
int ispunct (int c) ;
int isspace (int c) ;
int isupper (int c) ;
int isxdigit (int c) ;
int tolower (int c) ;
int toupper (int c) ;
int isascii (int c) ;
int toascii (int c) ;
int _tolower (int c) ;
int _toupper (int c) ;
extern const char _ctype_[];
# 1 "/usr/local/src/egcs-970917/gcc/f/runtime/libI77/lread.c" 2
# 1 "../../../include/f2c.h" 1
typedef long int integer;
typedef unsigned long int uinteger;
typedef char *address;
typedef short int shortint;
typedef float real;
typedef double doublereal;
typedef struct { real r, i; } complex;
typedef struct { doublereal r, i; } doublecomplex;
typedef long int logical;
typedef short int shortlogical;
typedef char logical1;
typedef char integer1;
typedef long long int longint;
typedef unsigned long long int ulongint;
typedef long int flag;
typedef long int ftnlen;
typedef long int ftnint;
typedef struct
{ flag cierr;
ftnint ciunit;
flag ciend;
char *cifmt;
ftnint cirec;
} cilist;
typedef struct
{ flag icierr;
char *iciunit;
flag iciend;
char *icifmt;
ftnint icirlen;
ftnint icirnum;
} icilist;
typedef struct
{ flag oerr;
ftnint ounit;
char *ofnm;
ftnlen ofnmlen;
char *osta;
char *oacc;
char *ofm;
ftnint orl;
char *oblnk;
} olist;
typedef struct
{ flag cerr;
ftnint cunit;
char *csta;
} cllist;
typedef struct
{ flag aerr;
ftnint aunit;
} alist;
typedef struct
{ flag inerr;
ftnint inunit;
char *infile;
ftnlen infilen;
ftnint *inex;
ftnint *inopen;
ftnint *innum;
ftnint *innamed;
char *inname;
ftnlen innamlen;
char *inacc;
ftnlen inacclen;
char *inseq;
ftnlen inseqlen;
char *indir;
ftnlen indirlen;
char *infmt;
ftnlen infmtlen;
char *inform;
ftnint informlen;
char *inunf;
ftnlen inunflen;
ftnint *inrecl;
ftnint *innrec;
char *inblank;
ftnlen inblanklen;
} inlist;
union Multitype {
integer1 g;
shortint h;
integer i;
real r;
doublereal d;
complex c;
doublecomplex z;
};
typedef union Multitype Multitype;
struct Vardesc {
char *name;
char *addr;
ftnlen *dims;
int type;
};
typedef struct Vardesc Vardesc;
struct Namelist {
char *name;
Vardesc **vars;
int nvars;
};
typedef struct Namelist Namelist;
# 183 "../../../include/f2c.h"
typedef int (*U_fp)();
typedef shortint (*J_fp)();
typedef integer (*I_fp)();
typedef real (*R_fp)();
typedef doublereal (*D_fp)(), (*E_fp)();
typedef void (*C_fp)();
typedef void (*Z_fp)();
typedef logical (*L_fp)();
typedef shortlogical (*K_fp)();
typedef void (*H_fp)();
typedef int (*S_fp)();
typedef void C_f;
typedef void H_f;
typedef void Z_f;
typedef doublereal E_f;
# 226 "../../../include/f2c.h"
# 2 "/usr/local/src/egcs-970917/gcc/f/runtime/libI77/lread.c" 2
# 1 "/usr/local/src/egcs-970917/gcc/f/runtime/libI77/fio.h" 1
# 1 "../../../include/stdio.h" 1
# 1 "../../../include/_ansi.h" 1
# 71 "../../../include/_ansi.h"
# 33 "../../../include/stdio.h" 2
# 1 "../../../include/stddef.h" 1
# 19 "../../../include/stddef.h"
# 61 "../../../include/stddef.h"
# 131 "../../../include/stddef.h"
typedef long unsigned int size_t;
# 258 "../../../include/stddef.h"
# 270 "../../../include/stddef.h"
# 302 "../../../include/stddef.h"
# 38 "../../../include/stdio.h" 2
# 1 "../../../include/stdarg.h" 1
typedef void *__gnuc_va_list;
# 116 "../../../include/stdarg.h"
# 202 "../../../include/stdarg.h"
# 41 "../../../include/stdio.h" 2
# 1 "/usr/local/arm-coff/include/sys/reent.h" 1 3
# 1 "../../../include/_ansi.h" 1
# 71 "../../../include/_ansi.h"
# 13 "/usr/local/arm-coff/include/sys/reent.h" 2 3
struct _glue
{
struct _glue *_next;
int _niobs;
struct __sFILE *_iobs;
};
struct _Bigint
{
struct _Bigint *_next;
int _k, _maxwds, _sign, _wds;
unsigned long _x[1];
};
struct _atexit {
struct _atexit *_next;
int _ind;
void (*_fns[32 ])();
};
struct __sbuf {
unsigned char *_base;
int _size;
};
typedef long _fpos_t;
struct __sFILE {
unsigned char *_p;
int _r;
int _w;
short _flags;
short _file;
struct __sbuf _bf;
int _lbfsize;
void * _cookie;
int (*_read) (void * _cookie, char *_buf, int _n) ;
int (*_write) (void * _cookie, const char *_buf, int _n) ;
_fpos_t (*_seek) (void * _cookie, _fpos_t _offset, int _whence) ;
int (*_close) (void * _cookie) ;
struct __sbuf _ub;
unsigned char *_up;
int _ur;
unsigned char _ubuf[3];
unsigned char _nbuf[1];
struct __sbuf _lb;
int _blksize;
int _offset;
struct _reent *_data;
};
struct _reent
{
int _errno;
struct __sFILE *_stdin, *_stdout, *_stderr;
int _inc;
char _emergency[25];
int _current_category;
const char *_current_locale;
int __sdidinit;
void (*__cleanup) (struct _reent *) ;
struct _Bigint *_result;
int _result_k;
struct _Bigint *_p5s;
struct _Bigint **_freelist;
int _cvtlen;
char *_cvtbuf;
unsigned char * _nextf[30 ];
unsigned int _nmalloc[30 ];
struct _atexit *_atexit;
struct _atexit _atexit0;
void (**(_sig_func))();
struct _glue __sglue;
struct __sFILE __sf[3];
};
extern struct _reent *_impure_ptr ;
void _reclaim_reent (struct _reent *) ;
# 49 "../../../include/stdio.h" 2
typedef _fpos_t fpos_t;
typedef struct __sFILE FILE;
int remove (const char *) ;
int rename (const char *, const char *) ;
FILE * tmpfile (void) ;
char * tmpnam (char *) ;
int fclose (FILE *) ;
int fflush (FILE *) ;
FILE * freopen (const char *, const char *, FILE *) ;
void setbuf (FILE *, char *) ;
int setvbuf (FILE *, char *, int, size_t) ;
int fprintf (FILE *, const char *, ...) ;
int fscanf (FILE *, const char *, ...) ;
int printf (const char *, ...) ;
int scanf (const char *, ...) ;
int sscanf (const char *, const char *, ...) ;
int vfprintf (FILE *, const char *, __gnuc_va_list ) ;
int vprintf (const char *, __gnuc_va_list ) ;
int vsprintf (char *, const char *, __gnuc_va_list ) ;
int fgetc (FILE *) ;
char * fgets (char *, int, FILE *) ;
int fputc (int, FILE *) ;
int fputs (const char *, FILE *) ;
int getc (FILE *) ;
int getchar (void) ;
char * gets (char *) ;
int putc (int, FILE *) ;
int putchar (int) ;
int puts (const char *) ;
int ungetc (int, FILE *) ;
size_t fread (void * , size_t _size, size_t _n, FILE *) ;
size_t fwrite (const void * , size_t _size, size_t _n, FILE *) ;
int fgetpos (FILE *, fpos_t *) ;
int fseek (FILE *, long, int) ;
int fsetpos (FILE *, const fpos_t *) ;
long ftell ( FILE *) ;
void rewind (FILE *) ;
void clearerr (FILE *) ;
int feof (FILE *) ;
int ferror (FILE *) ;
void perror (const char *) ;
FILE * fopen (const char *_name, const char *_type) ;
int sprintf (char *, const char *, ...) ;
int vfiprintf (FILE *, const char *, __gnuc_va_list ) ;
int iprintf (const char *, ...) ;
int fiprintf (FILE *, const char *, ...) ;
FILE * fdopen (int, const char *) ;
int fileno (FILE *) ;
int getw (FILE *) ;
int pclose (FILE *) ;
FILE * popen (const char *, const char *) ;
int putw (int, FILE *) ;
void setbuffer (FILE *, char *, int) ;
int setlinebuf (FILE *) ;
FILE * _fdopen_r (struct _reent *, int, const char *) ;
FILE * _fopen_r (struct _reent *, const char *, const char *) ;
int _getchar_r (struct _reent *) ;
char * _gets_r (struct _reent *, char *) ;
int _iprintf_r (struct _reent *, const char *, ...) ;
int _mkstemp_r (struct _reent *, char *) ;
char * _mktemp_r (struct _reent *, char *) ;
void _perror_r (struct _reent *, const char *) ;
int _printf_r (struct _reent *, const char *, ...) ;
int _putchar_r (struct _reent *, int) ;
int _puts_r (struct _reent *, const char *) ;
int _remove_r (struct _reent *, const char *) ;
int _rename_r (struct _reent *,
const char *_old, const char *_new) ;
int _scanf_r (struct _reent *, const char *, ...) ;
int _sprintf_r (struct _reent *, char *, const char *, ...) ;
char * _tempnam_r (struct _reent *, char *, char *) ;
FILE * _tmpfile_r (struct _reent *) ;
char * _tmpnam_r (struct _reent *, char *) ;
int _vfprintf_r (struct _reent *, FILE *, const char *, __gnuc_va_list ) ;
int _vprintf_r (struct _reent *, const char *, __gnuc_va_list ) ;
int _vsprintf_r (struct _reent *, char *, const char *, __gnuc_va_list ) ;
int __srget (FILE *) ;
int __swbuf (int, FILE *) ;
FILE * funopen (const void * _cookie,
int (*readfn)(void * _cookie, char *_buf, int _n),
int (*writefn)(void * _cookie, const char *_buf, int _n),
fpos_t (*seekfn)(void * _cookie, fpos_t _off, int _whence),
int (*closefn)(void * _cookie)) ;
# 260 "../../../include/stdio.h"
# 1 "/usr/local/src/egcs-970917/gcc/f/runtime/libI77/fio.h" 2
# 1 "/usr/local/arm-coff/include/errno.h" 1 3
# 1 "/usr/local/arm-coff/include/sys/errno.h" 1 3
extern int *__errno (void) ;
# 1 "/usr/local/arm-coff/include/errno.h" 2 3
# 2 "/usr/local/src/egcs-970917/gcc/f/runtime/libI77/fio.h" 2
typedef long uiolen;
typedef struct
{ FILE *ufd;
char *ufnm;
long uinode;
int udev;
int url;
flag useek;
flag ufmt;
flag uprnt;
flag ublnk;
flag uend;
flag uwrt;
flag uscrtch;
} unit;
extern int f__init;
extern cilist *f__elist;
extern flag f__reading,f__external,f__sequential,f__formatted;
extern int (*f__getn)(void),(*f__putn)(int);
extern long f__inode(char*,int*);
extern void sig_die(char*,int);
extern void f__fatal(int,char*);
extern int t_runc(alist*);
extern int f__nowreading(unit*), f__nowwriting(unit*);
extern int fk_open(int,int,ftnint);
extern int en_fio(void);
extern void f_init(void);
extern int (*f__donewrec)(void), t_putc(int), x_wSL(void);
extern void b_char(char*,char*,ftnlen), g_char(char*,ftnlen,char*);
extern int c_sfe(cilist*), z_rnew(void);
extern int isatty(int);
extern int err__fl(int,int,char*);
extern int xrd_SL(void);
extern int (*f__doend)(void );
extern FILE *f__cf;
extern unit *f__curunit;
extern unit f__units[];
extern int f__recpos;
extern int f__cursor;
extern int f__hiwater;
# 3 "/usr/local/src/egcs-970917/gcc/f/runtime/libI77/lread.c" 2
extern char *f__fmtbuf;
static longint f__llx;
static int quad_read;
# 1 "../../../include/stdlib.h" 1
# 1 "../../../include/_ansi.h" 1
# 71 "../../../include/_ansi.h"
# 13 "../../../include/stdlib.h" 2
# 1 "../../../include/stddef.h" 1
# 19 "../../../include/stddef.h"
# 61 "../../../include/stddef.h"
# 131 "../../../include/stddef.h"
# 182 "../../../include/stddef.h"
typedef int wchar_t;
# 270 "../../../include/stddef.h"
# 302 "../../../include/stddef.h"
# 17 "../../../include/stdlib.h" 2
typedef struct
{
int quot;
int rem;
} div_t;
typedef struct
{
long quot;
long rem;
} ldiv_t;
void abort (void ) __attribute__ ( (noreturn) ) ;
int abs (int) ;
int atexit (void (*_func)(void )) ;
double atof (const char *_nptr) ;
float atoff (const char *_nptr) ;
int atoi (const char *_nptr) ;
long atol (const char *_nptr) ;
void * bsearch (const void * _key,
const void * _base,
size_t _nmemb,
size_t _size,
int (*_compar) (const void * , const void * ) ) ;
void * calloc (size_t _nmemb, size_t _size) ;
div_t div (int _numer, int _denom) ;
void exit (int _status) __attribute__ ( (noreturn) ) ;
void free (void * ) ;
char * getenv (const char *_string) ;
long labs (long) ;
ldiv_t ldiv (long _numer, long _denom) ;
void * malloc (size_t _size) ;
int mblen (const char *, size_t) ;
int mbtowc (wchar_t *, const char *, size_t) ;
int wctomb (char *, wchar_t) ;
size_t mbstowcs (wchar_t *, const char *, size_t) ;
size_t wcstombs (char *, const wchar_t *, size_t) ;
void qsort (void * _base, size_t _nmemb, size_t _size, int(*_compar)(const void * , const void * )) ;
int rand (void ) ;
void * realloc (void * _r, size_t _size) ;
void srand (unsigned _seed) ;
double strtod (const char *_n, char **_end_PTR) ;
float strtodf (const char *_n, char **_end_PTR) ;
long strtol (const char *_n, char **_end_PTR, int _base) ;
unsigned long strtoul (const char *_n_PTR, char **_end_PTR, int _base) ;
unsigned long _strtoul_r (struct _reent *,const char *_n_PTR, char **_end_PTR, int _base) ;
int system (const char *_string) ;
void cfree (void * , void * ) ;
int putenv (const char *_string) ;
int setenv (const char *_string, const char *_value, int _overwrite) ;
char * gcvt (double,int,char *) ;
char * gcvtf (float,int,char *) ;
char * fcvt (double,int,int *,int *) ;
char * fcvtf (float,int,int *,int *) ;
char * ecvt (double,int,int *,int *) ;
char * ecvtbuf (double, int, int*, int*, char *) ;
char * fcvtbuf (double, int, int*, int*, char *) ;
char * ecvtf (float,int,int *,int *) ;
char * dtoa (double, int, int, int *, int*, char**) ;
int rand_r (unsigned *_seed) ;
char * _dtoa_r (struct _reent *, double, int, int, int *, int*, char**) ;
void * _malloc_r (struct _reent *, size_t) ;
void * _calloc_r (struct _reent *, size_t, size_t) ;
void _free_r (struct _reent *, void * ) ;
void * _realloc_r (struct _reent *, void * , size_t) ;
void _mstats_r (struct _reent *, char *) ;
int _system_r (struct _reent *, const char *) ;
void __eprintf (const char *, const char *, unsigned int, const char *) ;
# 25 "/usr/local/src/egcs-970917/gcc/f/runtime/libI77/lread.c" 2
int (*f__lioproc)(ftnint*, char*, ftnlen, ftnint), (*l_getc)(void),
(*l_ungetc)(int,FILE*);
# 1 "/usr/local/src/egcs-970917/gcc/f/runtime/libI77/fmt.h" 1
struct syl
{ int op,p1,p2,p3;
};
extern struct syl f__syl[];
extern int f__pc,f__parenlvl,f__revloc;
typedef union
{ real pf;
doublereal pd;
} ufloat;
typedef union
{ short is;
signed
char ic;
integer il;
longint ili;
} Uint;
extern int (*f__doed)(struct syl*, char*, ftnlen),(*f__doned)(struct syl*);
extern int (*f__dorevert)(void);
extern void fmt_bg(void);
extern int pars_f(char*);
extern int rd_ed(struct syl*, char*, ftnlen),rd_ned(struct syl*);
extern int w_ed(struct syl*, char*, ftnlen),w_ned(struct syl*);
extern int wrt_E(ufloat*, int, int, int, ftnlen);
extern int wrt_F(ufloat*, int, int, ftnlen);
extern int wrt_L(Uint*, int, ftnlen);
extern flag f__cblank,f__cplus,f__workdone, f__nonl;
extern char *f__fmtbuf;
extern int f__scale;
extern int f__cursor;
extern char *f__icvt(longint, int*, int*, int);
# 30 "/usr/local/src/egcs-970917/gcc/f/runtime/libI77/lread.c" 2
# 1 "/usr/local/src/egcs-970917/gcc/f/runtime/libI77/lio.h" 1
typedef union
{
char flchar;
short flshort;
ftnint flint;
longint fllongint;
real flreal;
doublereal fldouble;
} flex;
extern int f__scale;
extern int (*f__lioproc)(ftnint*, char*, ftnlen, ftnint);
extern int l_write(ftnint*, char*, ftnlen, ftnint);
extern void x_wsne(cilist*);
extern int c_le(cilist*), (*l_getc)(void), (*l_ungetc)(int,FILE*);
extern int l_read(ftnint*,char*,ftnlen,ftnint);
extern integer e_rsle(void), e_wsle(void), s_wsne(cilist*);
extern int z_rnew(void);
extern ftnint L_len;
# 31 "/usr/local/src/egcs-970917/gcc/f/runtime/libI77/lread.c" 2
# 1 "/usr/local/src/egcs-970917/gcc/f/runtime/libI77/fp.h" 1
# 32 "/usr/local/src/egcs-970917/gcc/f/runtime/libI77/lread.c" 2
int l_eof;
char f__ltab[128+1] = {
0,
0,0,4 ,0,0,0,0,0,0,32 | 2 ,1 | 32 ,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1 | 2 | 32 ,0,4 ,0,0,0,0,4 ,0,0,0,16 ,1 ,16 ,0,1 ,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,8 ,8 ,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
4 ,0,0,0,8 ,8 ,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
# 68 "/usr/local/src/egcs-970917/gcc/f/runtime/libI77/lread.c"
extern int ungetc(int, FILE*);
t_getc(void )
{ int ch;
if(f__curunit->uend) return((-1) );
if((ch= (--( f__cf )->_r < 0 ? __srget( f__cf ) : (int)(*( f__cf )->_p++)) )!= (-1) ) return(ch);
if(((( f__cf )->_flags & 0x0020 ) != 0) )
f__curunit->uend = l_eof = 1;
return((-1) );
}
integer e_rsle(void )
{
int ch;
f__init = 1;
if(f__curunit->uend) return(0);
while((ch=t_getc())!='\n')
if (ch == (-1) ) {
if(((( f__cf )->_flags & 0x0020 ) != 0) )
f__curunit->uend = l_eof = 1;
return (-1) ;
}
return(0);
}
flag f__lquit;
int f__lcount,f__ltype,nml_read;
char *f__lchar;
double f__lx,f__ly;
l_R(int poststar)
{
char s[40 + 8 +4];
register int ch;
register char *sp, *spe, *sp1;
long e, exp;
int havenum, havestar, se;
if (!poststar) {
if (f__lcount > 0)
return(0);
f__lcount = 1;
}
f__llx = 0;
f__ltype = 0;
exp = 0;
havestar = 0;
retry:
sp1 = sp = s;
spe = sp + 40 ;
havenum = 0;
switch(( ch =(*l_getc)()) ) {
case '-': *sp++ = ch; sp1++; spe++;
case '+':
( ch =(*l_getc)()) ;
}
while(ch == '0') {
++havenum;
( ch =(*l_getc)()) ;
}
while(((_ctype_+1)[ ch ]& 04 ) ) {
if (sp < spe) *sp++ = ch;
else ++exp;
( ch =(*l_getc)()) ;
}
if (ch == '*' && !poststar) {
if (sp == sp1 || exp || *s == '-') {
do {return err__fl((int) f__elist->cierr , 112 , "bad repetition count" );} while(0) ;
}
poststar = havestar = 1;
*sp = 0;
f__lcount = atoi(s);
goto retry;
}
if (ch == '.') {
( ch =(*l_getc)()) ;
if (sp == sp1)
while(ch == '0') {
++havenum;
--exp;
( ch =(*l_getc)()) ;
}
while(((_ctype_+1)[ ch ]& 04 ) ) {
if (sp < spe)
{ *sp++ = ch; --exp; }
( ch =(*l_getc)()) ;
}
}
havenum += sp - sp1;
se = 0;
if ((f__ltab[ ch +1]& 16 ) )
goto signonly;
if (havenum && (f__ltab[ ch +1]& 8 ) ) {
( ch =(*l_getc)()) ;
if ((f__ltab[ ch +1]& 16 ) ) {
signonly:
if (ch == '-') se = 1;
( ch =(*l_getc)()) ;
}
if (! ((_ctype_+1)[ ch ]& 04 ) ) {
bad:
do {return err__fl((int) f__elist->cierr , 112 , "exponent field" );} while(0) ;
}
e = ch - '0';
while(((_ctype_+1)[ ( ch =(*l_getc)()) ]& 04 ) ) {
e = 10*e + ch - '0';
if (e > 99999999 )
goto bad;
}
if (se)
exp -= e;
else
exp += e;
}
(void) (*l_ungetc)( ch , f__cf ) ;
if (sp > sp1) {
++havenum;
while(*--sp == '0')
++exp;
if (exp)
sprintf(sp+1, "e%ld", exp);
else
sp[1] = 0;
f__lx = atof(s);
if (quad_read && (se = sp - sp1 + exp) > 14 && se < 20) {
if (exp < 0)
sp += exp;
if (sp1 <= sp) {
f__llx = *sp1 - '0';
while(++sp1 <= sp)
f__llx = 10*f__llx + (*sp1 - '0');
}
while(--exp >= 0)
f__llx *= 10;
if (*s == '-')
f__llx = -f__llx;
}
}
else
f__lx = 0.;
if (havenum)
f__ltype = 3 ;
else
switch(ch) {
case ',':
case '/':
break;
default:
if (havestar && ( ch == ' '
||ch == '\t'
||ch == '\n'))
break;
if (nml_read > 1) {
f__lquit = 2;
return 0;
}
do {return err__fl((int) f__elist->cierr , 112 , "invalid number" );} while(0) ;
}
return 0;
}
static int
rd_count(register int ch)
{
if (ch < '0' || ch > '9')
return 1;
f__lcount = ch - '0';
while(( ch =(*l_getc)()) >= '0' && ch <= '9')
f__lcount = 10*f__lcount + ch - '0';
(*l_ungetc)( ch , f__cf ) ;
return f__lcount <= 0;
}
l_C(void )
{ int ch, nml_save;
double lz;
if(f__lcount>0) return(0);
f__ltype=0;
( ch =(*l_getc)()) ;
if(ch!='(')
{
if (nml_read > 1 && (ch < '0' || ch > '9')) {
(*l_ungetc)( ch , f__cf ) ;
f__lquit = 2;
return 0;
}
if (rd_count(ch))
if(!f__cf || ! ((( f__cf )->_flags & 0x0020 ) != 0) )
do {return err__fl((int) f__elist->cierr , 112 , "complex format" );} while(0) ;
else
do {if( f__elist->cierr ) {f__init &= ~2; (*__errno()) = ((-1) ) ;} else f__fatal( ((-1) ) , "lread" ); return( ((-1) ) );} while(0) ;
if(( ch =(*l_getc)()) !='*')
{
if(!f__cf || ! ((( f__cf )->_flags & 0x0020 ) != 0) )
do {return err__fl((int) f__elist->cierr , 112 , "no star" );} while(0) ;
else
do {if( f__elist->cierr ) {f__init &= ~2; (*__errno()) = ((-1) ) ;} else f__fatal( ((-1) ) , "lread" ); return( ((-1) ) );} while(0) ;
}
if(( ch =(*l_getc)()) !='(')
{ (*l_ungetc)( ch , f__cf ) ;
return(0);
}
}
else
f__lcount = 1;
while((f__ltab[ ( ch =(*l_getc)()) +1]& 32 ) );
(*l_ungetc)( ch , f__cf ) ;
nml_save = nml_read;
nml_read = 0;
if (ch = l_R(1))
return ch;
if (!f__ltype)
do {return err__fl((int) f__elist->cierr , 112 , "no real part" );} while(0) ;
lz = f__lx;
while((f__ltab[ ( ch =(*l_getc)()) +1]& 32 ) );
if(ch!=',')
{ (void) (*l_ungetc)( ch , f__cf ) ;
do {return err__fl((int) f__elist->cierr , 112 , "no comma" );} while(0) ;
}
while((f__ltab[ ( ch =(*l_getc)()) +1]& 32 ) );
(void) (*l_ungetc)( ch , f__cf ) ;
if (ch = l_R(1))
return ch;
if (!f__ltype)
do {return err__fl((int) f__elist->cierr , 112 , "no imaginary part" );} while(0) ;
while((f__ltab[ ( ch =(*l_getc)()) +1]& 32 ) );
if(ch!=')') do {return err__fl((int) f__elist->cierr , 112 , "no )" );} while(0) ;
f__ly = f__lx;
f__lx = lz;
f__llx = 0;
nml_read = nml_save;
return(0);
}
l_L(void )
{
int ch;
if(f__lcount>0) return(0);
f__lcount = 1;
f__ltype=0;
( ch =(*l_getc)()) ;
if(((_ctype_+1)[ ch ]& 04 ) )
{
rd_count(ch);
if(( ch =(*l_getc)()) !='*')
if(!f__cf || ! ((( f__cf )->_flags & 0x0020 ) != 0) )
do {return err__fl((int) f__elist->cierr , 112 , "no star" );} while(0) ;
else
do {if( f__elist->cierr ) {f__init &= ~2; (*__errno()) = ((-1) ) ;} else f__fatal( ((-1) ) , "lread" ); return( ((-1) ) );} while(0) ;
( ch =(*l_getc)()) ;
}
if(ch == '.') ( ch =(*l_getc)()) ;
switch(ch)
{
case 't':
case 'T':
f__lx=1;
break;
case 'f':
case 'F':
f__lx=0;
break;
default:
if((f__ltab[ ch +1]& 2 ) || (f__ltab[ ch +1]& 1 ) || ch== (-1) )
{ (void) (*l_ungetc)( ch , f__cf ) ;
return(0);
}
if (nml_read > 1) {
(*l_ungetc)( ch , f__cf ) ;
f__lquit = 2;
return 0;
}
do {return err__fl((int) f__elist->cierr , 112 , "logical" );} while(0) ;
}
f__ltype= 3 ;
while(! (f__ltab[ ( ch =(*l_getc)()) +1]& 1 ) && ch!= (-1) );
(void) (*l_ungetc)( ch , f__cf ) ;
return(0);
}
l_CHAR(void )
{ int ch,size,i;
static char rafail[] = "realloc failure";
char quote,*p;
if(f__lcount>0) return(0);
f__ltype=0;
if(f__lchar!= 0L ) free(f__lchar);
size= 128 ;
p=f__lchar = (char *)malloc((unsigned int)size);
if(f__lchar == 0L )
do {return err__fl((int) f__elist->cierr , 113 , "no space" );} while(0) ;
( ch =(*l_getc)()) ;
if(((_ctype_+1)[ ch ]& 04 ) ) {
f__lcount = ch - '0';
*p++ = ch;
for(i = 1;;) {
switch(( ch =(*l_getc)()) ) {
case '*':
if (f__lcount == 0) {
f__lcount = 1;
if (nml_read)
goto no_quote;
goto noquote;
}
p = f__lchar;
goto have_lcount;
case ',':
case ' ':
case '\t':
case '\n':
case '/':
(*l_ungetc)( ch , f__cf ) ;
case (-1) :
f__lcount = 1;
f__ltype = 9 ;
return *p = 0;
}
if (! ((_ctype_+1)[ ch ]& 04 ) ) {
f__lcount = 1;
if (nml_read) {
no_quote:
do {return err__fl((int) f__elist->cierr , 112 ,
"undelimited character string" );} while(0) ;
}
goto noquote;
}
*p++ = ch;
f__lcount = 10*f__lcount + ch - '0';
if (++i == size) {
f__lchar = (char *)realloc(f__lchar,
(unsigned int)(size += 128 ));
if(f__lchar == 0L )
do {return err__fl((int) f__elist->cierr , 113 , rafail );} while(0) ;
p = f__lchar + i;
}
}
}
else (void) (*l_ungetc)( ch , f__cf ) ;
have_lcount:
if(( ch =(*l_getc)()) =='\'' || ch=='"') quote=ch;
else if((f__ltab[ ch +1]& 2 ) || ((f__ltab[ ch +1]& 1 ) && ch != '\n') || ch== (-1) ) {
(*l_ungetc)( ch , f__cf ) ;
return 0;
}
else if (nml_read > 1) {
(*l_ungetc)( ch , f__cf ) ;
f__lquit = 2;
return 0;
}
else {
*p++ = ch;
for(i = 1;;) {
switch(( ch =(*l_getc)()) ) {
case ',':
case ' ':
case '\t':
case '\n':
case '/':
(*l_ungetc)( ch , f__cf ) ;
case (-1) :
f__ltype = 9 ;
return *p = 0;
}
noquote:
*p++ = ch;
if (++i == size) {
f__lchar = (char *)realloc(f__lchar,
(unsigned int)(size += 128 ));
if(f__lchar == 0L )
do {return err__fl((int) f__elist->cierr , 113 , rafail );} while(0) ;
p = f__lchar + i;
}
}
}
f__ltype= 9 ;
for(i=0;;)
{ while(( ch =(*l_getc)()) !=quote && ch!='\n'
&& ch!= (-1) && ++i<size) *p++ = ch;
if(i==size)
{
newone:
f__lchar= (char *)realloc(f__lchar,
(unsigned int)(size += 128 ));
if(f__lchar == 0L )
do {return err__fl((int) f__elist->cierr , 113 , rafail );} while(0) ;
p=f__lchar+i-1;
*p++ = ch;
}
else if(ch== (-1) ) return((-1) );
else if(ch=='\n')
{ if(*(p-1) != '\\') continue;
i--;
p--;
if(++i<size) *p++ = ch;
else goto newone;
}
else if(( ch =(*l_getc)()) ==quote)
{ if(++i<size) *p++ = ch;
else goto newone;
}
else
{ (void) (*l_ungetc)( ch , f__cf ) ;
*p = 0;
return(0);
}
}
}
c_le(cilist *a)
{
if(f__init != 1) f_init();
f__init = 3;
f__fmtbuf="list io";
if(a->ciunit>= 100 || a->ciunit<0)
do {if( a->cierr ) {f__init &= ~2; (*__errno()) = 101 ;} else f__fatal( 101 , "stler" ); return( 101 );} while(0) ;
f__scale=f__recpos=0;
f__elist=a;
f__curunit = &f__units[a->ciunit];
if(f__curunit->ufd== 0L && fk_open(3 ,5 ,a->ciunit))
do {if( a->cierr ) {f__init &= ~2; (*__errno()) = 102 ;} else f__fatal( 102 , "lio" ); return( 102 );} while(0) ;
f__cf=f__curunit->ufd;
if(!f__curunit->ufmt) do {if( a->cierr ) {f__init &= ~2; (*__errno()) = 103 ;} else f__fatal( 103 , "lio" ); return( 103 );} while(0) ;
return(0);
}
l_read(ftnint *number, char *ptr, ftnlen len, ftnint type)
{
int i,n,ch;
doublereal *yy;
real *xx;
for(i=0;i<*number;i++)
{
if(f__lquit) return(0);
if(l_eof)
do {if( f__elist->ciend ) {f__init &= ~2; (*__errno()) = (-1) ;} else f__fatal( (-1) , "list in" ); return( (-1) );} while(0) ;
if(f__lcount == 0) {
f__ltype = 0;
for(;;) {
( ch =(*l_getc)()) ;
switch(ch) {
case (-1) :
do {if( f__elist->ciend ) {f__init &= ~2; (*__errno()) = ((-1) ) ;} else f__fatal( ((-1) ) , "list in" ); return( ((-1) ) );} while(0) ;
case ' ':
case '\t':
case '\n':
continue;
case '/':
f__lquit = 1;
goto loopend;
case ',':
f__lcount = 1;
goto loopend;
default:
(void) (*l_ungetc)( ch , f__cf ) ;
goto rddata;
}
}
}
rddata:
switch((int)type)
{
case 11 :
case 2 :
case 3 :
case 4 :
case 5 :
if(n=( l_R(0) )) {f__init &= ~2; return(n);} ;
break;
case 14 :
quad_read = 1;
n = l_R(0);
quad_read = 0;
if(n=( n )) {f__init &= ~2; return(n);} ;
break;
case 6 :
case 7 :
if(n=( l_C() )) {f__init &= ~2; return(n);} ;
break;
case 12 :
case 13 :
case 8 :
if(n=( l_L() )) {f__init &= ~2; return(n);} ;
break;
case 9 :
if(n=( l_CHAR() )) {f__init &= ~2; return(n);} ;
break;
}
while (( ch =(*l_getc)()) == ' ' || ch == '\t');
if (ch != ',' || f__lcount > 1)
(*l_ungetc)( ch , f__cf ) ;
loopend:
if(f__lquit) return(0);
if(f__cf && ((( f__cf )->_flags & 0x0040 ) != 0) ) {
((void)(( f__cf )->_flags &= ~(0x0040 | 0x0020 ))) ;
do {return err__fl((int) f__elist->cierr , (*__errno()) , "list in" );} while(0) ;
}
if(f__ltype==0) goto bump;
switch((int)type)
{
case 11 :
case 12 :
((flex *)ptr) ->flchar = (char)f__lx;
break;
case 13 :
case 2 :
((flex *)ptr) ->flshort = (short)f__lx;
break;
case 8 :
case 3 :
((flex *)ptr) ->flint=f__lx;
break;
case 14 :
if (!(((flex *)ptr) ->fllongint = f__llx))
((flex *)ptr) ->fllongint = f__lx;
break;
case 4 :
((flex *)ptr) ->flreal=f__lx;
break;
case 5 :
((flex *)ptr) ->fldouble=f__lx;
break;
case 6 :
xx=(real *)ptr;
*xx++ = f__lx;
*xx = f__ly;
break;
case 7 :
yy=(doublereal *)ptr;
*yy++ = f__lx;
*yy = f__ly;
break;
case 9 :
b_char(f__lchar,ptr,len);
break;
}
bump:
if(f__lcount>0) f__lcount--;
ptr += len;
if (nml_read)
nml_read++;
}
return(0);
}
integer s_rsle(cilist *a)
{
int n;
if(n=c_le(a)) return(n);
f__reading=1;
f__external=1;
f__formatted=1;
f__lioproc = l_read;
f__lquit = 0;
f__lcount = 0;
l_eof = 0;
if(f__curunit->uwrt && f__nowreading(f__curunit))
do {if( a->cierr ) {f__init &= ~2; (*__errno()) = (*__errno()) ;} else f__fatal( (*__errno()) , "read start" ); return( (*__errno()) );} while(0) ;
if(f__curunit->uend)
do {if( f__elist->ciend ) {f__init &= ~2; (*__errno()) = ((-1) ) ;} else f__fatal( ((-1) ) , "read start" ); return( ((-1) ) );} while(0) ;
l_getc = t_getc;
l_ungetc = ungetc ;
f__doend = xrd_SL;
return(0);
}
More information about the Gcc-bugs
mailing list