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