Article View: gnu.g++.bug
Article #1401setjmp problem
From: Tim Murnaghan ime196tpm
Date: Sat, 23 Jan 1993 02:25
Date: Sat, 23 Jan 1993 02:25
4097 lines
48021 bytes
48021 bytes
The following program which calls setjmp causes endless recursion in
setjmp_protect because of a circular block chain.
It's pretty simple to have setjmp_protect protect itself against this; but how
did the block chain get to be circular ?
+ g++ -v -O -g -I. -I../. -I.././inc -I.././clib -DTRACE -c ../vsxconf.cc -o vsxconf.o
gcc version 2.3.3
/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/cpp -lang-c++ -v -I. -I../.
-I.././inc -I.././clib -undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -Di386
-Dunix -D__i386__ -D__unix__ -D__i386 -D__unix -D__OPTIMIZE__ -g -D_M_I386
-D_M_I86 -D_M_I86SM -D_M_SDATA -D_M_STEXT -D_M_UNIX -D_M_XENIX -D_M_SYS5
-D_M_SYSV -D_M_SYS3 -D_M_SYSIII -D_M_COFF -D_M_BITFIELDS -D_M_WORDSWAP
-DM_I386 -DM_I86 -DM_I86SM -DM_SDATA -DM_STEXT -DM_UNIX -DM_XENIX -DM_SYS5
-DM_SYSV -DM_SYS3 -DM_SYSIII -DM_COFF -DM_BITFIELDS -DM_WORDSWAP -DTRACE
../vsxconf.cc /usr/tmp/cca14751.i
GNU CPP version 2.3.3 (80386, ATT syntax)
/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/cc1plus /usr/tmp/cca14751.i -quiet
-dumpbase vsxconf.cc -g -O -version -o /usr/tmp/cca14751.s
GNU C++ version 2.3.3 (80386, ATT syntax) compiled by GNU C version 2.3.3.
..... wait a long time for a core dump
-------------------- cut here --------------------
# 1 "../vsxconf.cc"
extern yyparse();
extern yydebug;
extern init_lex();
# 1 "/usr/local/lib/g++-include/std.h" 1 3
# 1 "/usr/local/lib/g++-include/_G_config.h" 1 3
typedef long _G_clock_t;
typedef short _G_dev_t;
typedef long _G_fpos_t;
typedef unsigned short _G_gid_t;
typedef unsigned short _G_ino_t;
typedef unsigned short _G_mode_t;
typedef short _G_nlink_t;
typedef long _G_off_t;
typedef short _G_pid_t;
typedef int _G_ptrdiff_t;
typedef int _G_sigset_t;
typedef unsigned int _G_size_t;
typedef long _G_time_t;
typedef unsigned short _G_uid_t;
typedef long int _G_wchar_t;
typedef int _G_ssize_t;
typedef char * _G_va_list;
# 23 "/usr/local/lib/g++-include/std.h" 2 3
# 1 "/usr/local/lib/g++-include/stddef.h" 1 3
extern "C" {
# 1 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/stddef.h" 1 3
# 43 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/stddef.h" 3
typedef int ptrdiff_t;
typedef unsigned int size_t;
typedef __wchar_t wchar_t;
# 179 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/stddef.h" 3
# 7 "/usr/local/lib/g++-include/stddef.h" 2 3
}
# 24 "/usr/local/lib/g++-include/std.h" 2 3
# 1 "/usr/local/lib/g++-include/stdlib.h" 1 3
extern "C" {
int abs(int);
void volatile abort(void);
double atof(const char*);
int atoi(const char*);
long atol(const char*);
int atexit(auto void (*p) (void));
int bsearch (const void *, const void *, size_t,
size_t, auto int (*ptf)(const void*, const void*));
void* calloc(size_t, size_t);
void cfree(void*);
void volatile exit(int);
char* fcvt(double, int, int*, int*);
void free(void*);
char* getenv(const char*);
int getopt(int, char * const *, const char*);
int getpw(int, char*);
char* gcvt(double, int, char*);
char* ecvt(double, int, int*, int*);
extern char** environ;
long labs(long);
void* malloc(size_t);
size_t malloc_usable_size(void*);
int putenv(const char*);
extern char* optarg;
extern int opterr;
extern int optind;
void qsort(void*, size_t, size_t, auto int (*ptf)(void*,void*));
int rand(void);
void* realloc(void*, size_t);
int setkey(const char*);
int srand(unsigned int);
double strtod(const char*, char**);
long strtol(const char*, char**, int);
unsigned long stroul(const char**, int);
int system(const char*);
long random(void);
void srandom(int);
char* setstate(char*);
char* initstate(unsigned, char*, int);
double drand48(void);
void lcong48(short*);
long jrand48(short*);
long lrand48(void);
long mrand48(void);
long nrand48(short*);
short* seed48(short*);
void srand48(long);
char* ctermid(char*);
char* cuserid(char*);
char* tempnam(const char*, const char*);
char* tmpnam(char*);
}
# 25 "/usr/local/lib/g++-include/std.h" 2 3
# 1 "/usr/local/lib/g++-include/string.h" 1 3
extern "C" {
char* strcat(char*, const char*);
char* strchr(const char*, int);
int strcmp(const char*, const char*);
int strcoll(const char*, const char*);
char* strcpy(char*, const char*);
_G_size_t strcspn(const char*, const char*);
char* strdup(const char*);
_G_size_t strlen(const char*);
char* strncat(char*, const char*, _G_size_t );
int strncmp(const char*, const char*, _G_size_t );
char* strncpy(char*, const char*, _G_size_t );
char* strpbrk(const char*, const char*);
char* strrchr(const char*, int);
_G_size_t strspn(const char*, const char*);
char* strstr(const char*, const char *);
char* strtok(char*, const char*);
_G_size_t strxfrm(char*, const char*, _G_size_t );
char* index(const char*, int);
char* rindex(const char*, int);
}
# 1 "/usr/local/lib/g++-include/memory.h" 1 3
extern "C" {
void* memalign (...) ;
void* memccpy (...) ;
void* memchr (...) ;
int memcmp (...) ;
void* memcpy (...) ;
void* memmove (...) ;
void* memset (...) ;
int ffs (...) ;
_G_size_t getpagesize (...) ;
void* valloc (...) ;
void bcopy (...) ;
int bcmp (...) ;
void bzero (...) ;
}
# 43 "/usr/local/lib/g++-include/string.h" 2 3
# 26 "/usr/local/lib/g++-include/std.h" 2 3
# 1 "/usr/local/lib/g++-include/unistd.h" 1 3
extern "C" {
# 1 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/unistd.h" 1 3
#pragma comment(exestr, "@(#) unistd.h 7.1 91/08/14 ")
# 1 "/usr/local/lib/g++-include/sys/types.h" 1 3
extern "C"
{
# 1 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/sys/types.h" 1 3
#pragma comment(exestr, "@(#) types.h 23.14 91/11/23 ")
typedef struct { int r[1]; } *physadr;
typedef long daddr_t;
typedef char * caddr_t;
typedef unsigned char unchar;
typedef unsigned char u_char;
typedef unsigned char uchar_t;
typedef unsigned short ushort;
typedef unsigned short u_short;
typedef unsigned int uint;
typedef unsigned int u_int;
typedef unsigned long ulong;
typedef unsigned long u_long;
typedef unsigned long ulong_t;
typedef unsigned short ino_t;
typedef short cnt_t;
typedef long time_t;
typedef int label_t[6];
typedef unsigned short mode_t;
typedef short nlink_t;
typedef short dev_t;
typedef long off_t;
typedef unsigned long paddr_t;
typedef unsigned short mloc_t;
typedef long key_t;
typedef int pfn_t;
typedef unsigned short use_t;
typedef char * faddr_t;
struct saddr {
unsigned short sa_seg;
long sa_off;
};
typedef short sysid_t;
typedef short index_t;
typedef short lock_t;
typedef ushort sel_t;
typedef long clock_t;
typedef long fpos_t;
typedef int sig_atomic_t;
typedef struct {
int quot;
int rem;
} div_t;
typedef struct {
long quot;
long rem;
} ldiv_t;
typedef unsigned short uid_t;
typedef unsigned short gid_t;
typedef short pid_t;
typedef long fd_mask;
typedef struct fd_set {
fd_mask fds_bits[(((150 )+(( (sizeof(fd_mask) * 8 ) )-1))/( (sizeof(fd_mask) * 8 ) )) ];
} fd_set;
typedef unsigned long mask_t;
typedef mask_t priv_t;
# 15 "/usr/local/lib/g++-include/sys/types.h" 2 3
}
# 20 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/unistd.h" 2 3
# 1 "/usr/include/sys/unistd.h" 1 3
#pragma comment(exestr, "@(#) unistd.h 23.6 91/10/01 ")
# 21 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/unistd.h" 2 3
# 31 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/unistd.h" 3
# 82 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/unistd.h" 3
extern "C" {
extern int utime(const char *, struct utimbuf *);
extern int __hide_chown (const char *, uid_t, gid_t);
extern pid_t fork(void);
extern gid_t getegid(void);
extern uid_t geteuid(void);
extern gid_t getgid(void);
extern int getgroups(int, gid_t *);
extern pid_t getpgrp(void);
extern pid_t getpid(void);
extern pid_t getppid(void);
extern uid_t getuid(void);
extern off_t lseek(int, off_t, int);
extern int __hide_setgid (gid_t);
extern int setpgid(pid_t, pid_t);
extern pid_t setsid(void);
extern int __hide_setuid (uid_t);
extern pid_t tcgetpgrp(int);
extern int tcsetpgrp(int, pid_t);
extern char* getcwd(char *, int);
extern char* getlogin(void);
extern char* ttyname(int);
extern void _exit(int);
extern int access(const char *, int);
extern unsigned int alarm(unsigned int);
extern int chdir(const char *);
extern int close(int);
extern char* ctermid(char *);
extern char* cuserid(char *);
extern int dup(int);
extern int dup2(int, int);
extern int __hide_execl (const char *, const char *, ...);
extern int __hide_execle (const char *, const char *, ...);
extern int __hide_execlp (const char *, const char *, ...);
extern int execv(const char *, const char *[]);
extern int execve(const char *, const char * [], const char * []);
extern int execvp(const char *, const char * []);
extern long fpathconf(int, int);
extern int isatty(int);
extern int link(const char *, const char *);
extern long pathconf(const char *, int);
extern int pause(void);
extern int pipe(int *);
extern int read(int, void *, unsigned int);
extern int rename(const char *, const char *);
extern int rmdir(const char *);
extern unsigned int sleep(unsigned int);
extern long sysconf(int);
extern int unlink(const char *);
extern int write(int, const void *, unsigned int);
};
# 25 "/usr/local/lib/g++-include/unistd.h" 2 3
# 59 "/usr/local/lib/g++-include/unistd.h" 3
extern void volatile _exit(int);
extern unsigned alarm (...) ;
extern int brk (...) ;
extern int chdir (...) ;
extern int chmod (...) ;
extern int chown (const char*, _G_uid_t, _G_gid_t);
extern int close (...) ;
extern char* crypt (...) ;
extern int dup (...) ;
extern int dup2 (...) ;
extern void encrypt (...) ;
extern int execl (const char*, const char *, ...);
extern int execle (const char*, const char *, ...);
extern int execlp (const char*, const char*, ...);
extern int exect (...) ;
extern int execv (...) ;
extern int execve (...) ;
extern int execvp (...) ;
extern int fchown (int, _G_uid_t, _G_gid_t);
extern _G_pid_t fork (...) ;
extern int fsync (...) ;
extern int ftruncate (...) ;
extern char* getcwd (...) ;
extern int getdomainname (...) ;
extern int getdtablesize (...) ;
extern int getgroups (...) ;
extern _G_uid_t geteuid (...) ;
extern _G_gid_t getegid (...) ;
extern _G_gid_t getgid (...) ;
extern long gethostid (...) ;
extern int gethostname (...) ;
extern _G_pid_t getpgrp (...) ;
extern _G_pid_t getpid (...) ;
extern _G_pid_t getppid (...) ;
extern char* getlogin (...) ;
extern char* getpass (...) ;
extern _G_uid_t getuid (...) ;
extern int ioctl (int, int, ... );
extern int isatty (...) ;
extern int link (...) ;
extern int mkstemp (...) ;
extern char* mktemp (...) ;
extern int nice (...) ;
extern int pause (...) ;
extern int pipe (...) ;
extern int readlink (...) ;
extern int rename (...) ;
extern int rmdir (...) ;
extern void* sbrk (...) ;
extern int syscall (...) ;
extern int setgid (_G_gid_t);
extern int sethostname (...) ;
extern _G_pid_t setpgrp (...) ;
extern int setregid (...) ;
extern int setreuid (...) ;
extern int setuid (_G_uid_t);
extern unsigned sleep (...) ;
extern void swab (...) ;
extern int symlink (...) ;
extern long sysconf (...) ;
extern int truncate (...) ;
extern char* ttyname (...) ;
extern int ttyslot (...) ;
extern int unlink (...) ;
extern _G_pid_t vfork (...) ;
extern int vadvise (...) ;
extern int vhangup (...) ;
extern _G_off_t lseek (...) ;
extern _G_ssize_t read (...) ;
extern _G_ssize_t write (...) ;
extern int access (...) ;
extern int flock (...) ;
}
# 28 "/usr/local/lib/g++-include/std.h" 2 3
# 1 "/usr/local/lib/g++-include/stdio.h" 1 3
#pragma interface
extern "C" {
# 1 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/stdio.h" 1 3
# 1 "/usr/local/lib/g++-include/stdarg.h" 1 3
extern "C" {
# 1 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/stdarg.h" 1 3
typedef char *__gnuc_va_list;
# 85 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/stdarg.h" 3
# 137 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/stdarg.h" 3
# 2 "/usr/local/lib/g++-include/stdarg.h" 2 3
}
# 2 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/stdio.h" 2 3
#pragma comment(exestr, "@(#) stdio.h 7.5 91/10/24 ")
#pragma comment(exestr, "@(#) stdio.h 7.1 91/08/14 ")
# 1 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/limits.h" 1 3
# 1 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/limits.h" 1 3
# 99 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/limits.h" 3
# 11 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/limits.h" 2 3
# 44 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/stdio.h" 2 3
typedef char *__va_list__;
typedef struct {
int __cnt;
unsigned char *__ptr;
unsigned char *__base;
char __flag;
char __file;
} FILE;
extern "C" {
# 229 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/stdio.h" 3
extern int remove(const char *);
extern int rename(const char *, const char *);
extern FILE *tmpfile(void);
extern char *tmpnam(char *);
extern int fclose(FILE *);
extern int fflush(FILE *);
extern FILE *__hide_fopen (const char *, const char *);
extern FILE *__hide_freopen (const char *, const char *, FILE *);
extern void __hide_setbuf (FILE *, char *);
extern int __hide_setvbuf (FILE *, char *, int, _G_size_t );
extern int __hide_fprintf (FILE *, const char *, ...);
extern int __hide_fscanf (FILE *, const char *, ...);
extern int __hide_printf (const char *, ...);
extern int __hide_scanf (const char *, ...);
extern int __hide_sprintf (char *, const char *, ...);
extern int __hide_sscanf (const char *, const char *, ...);
extern int __hide_vfprintf (FILE *, const char *, __va_list__);
extern int __hide_vprintf (const char *, __va_list__);
extern int __hide_vsprintf (char *, const char *, __va_list__);
extern int fgetc(FILE *);
extern char *fgets(char *, int, FILE *);
extern int fputc(int, FILE *);
extern int __hide_fputs (const char *, FILE *);
extern int getc(FILE *);
extern int getchar(void);
extern char *gets(char *);
extern int putc(int, FILE *);
extern int putchar(int);
extern int __hide_puts (const char *);
extern int ungetc(int, FILE *);
extern _G_size_t __hide_fread (void *, _G_size_t , _G_size_t , FILE *);
extern _G_size_t __hide_fwrite (const void *, _G_size_t , _G_size_t , FILE *);
extern int fgetpos(FILE *, fpos_t *);
extern int fseek(FILE *, long int, int);
extern int fsetpos(FILE *, const fpos_t *);
extern long __hide_ftell (const FILE *);
extern void __hide_rewind (FILE *);
extern void clearerr(FILE *);
extern int feof(FILE *);
extern int ferror(FILE *);
extern void __hide_perror (const char *);
extern int unlink(const char *);
extern int _filbuf(FILE *);
extern int __hide__flsbuf (unsigned char, FILE *);
extern char *ctermid(char *);
extern char *cuserid(char *);
extern int system(const char *);
extern unsigned char * _bufendtab [];
extern FILE _iob [ 60 ];
};
# 1 "/usr/local/lib/g++-include/errno.h" 1 3
extern "C" {
# 1 "/usr/include/errno.h" 1 3
#pragma comment(exestr, "@(#) errno.h 6.1 91/06/06 ")
# 1 "/usr/include/sys/errno.h" 1 3
#pragma comment(exestr, "@(#) errno.h 23.4 91/05/03 ")
# 76 "/usr/include/sys/errno.h" 3
# 95 "/usr/include/sys/errno.h" 3
# 133 "/usr/include/sys/errno.h" 3
# 150 "/usr/include/sys/errno.h" 3
# 211 "/usr/include/sys/errno.h" 3
# 246 "/usr/include/sys/errno.h" 3
# 33 "/usr/include/errno.h" 2 3
extern "C" {
extern int errno;
# 49 "/usr/include/errno.h" 3
};
# 9 "/usr/local/lib/g++-include/errno.h" 2 3
extern char* sys_errlist[];
extern int sys_nerr;
extern int errno;
void __hide_perror (const char*);
char* strerr(int);
}
# 327 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/stdio.h" 2 3
# 353 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/stdio.h" 3
# 69 "/usr/local/lib/g++-include/stdio.h" 2 3
}
extern "C" {
int fclose(FILE*);
FILE* fdopen(int, const char*);
int fflush(FILE*);
int fgetc(FILE*);
char* fgets(char*, int, FILE *);
FILE* fopen(const char*, const char*);
int fprintf(FILE*, const char* ...);
int fputc(int, FILE*);
int fputs(const char*, FILE*);
_G_size_t fread(void*, _G_size_t , _G_size_t , FILE*);
FILE* freopen(const char*, const char*, FILE*);
int fscanf(FILE*, const char* ...);
int fseek(FILE*, long, int);
long ftell(FILE *);
_G_size_t fwrite(const void*, _G_size_t , _G_size_t , FILE*);
char* gets(char*);
int getw(FILE*);
int pclose(FILE*);
void perror(const char*);
FILE* popen(const char*, const char*);
int printf(const char* ...);
int puts(const char*);
int putw(int, FILE*);
int rewind(FILE*);
int scanf(const char* ...);
void setbuf(FILE*, char*);
void setbuffer(FILE*, char*, int);
int setlinebuf(FILE*);
int setvbuf(FILE*, char*, int, _G_size_t );
int sscanf(char*, const char* ...);
FILE* tmpfile();
int ungetc(int, FILE*);
int vfprintf (...) ;
int vprintf (...) ;
int sprintf (...) ;
int vsprintf (...) ;
extern int _filbuf (...) ;
extern int _flsbuf (...) ;
}
# 29 "/usr/local/lib/g++-include/std.h" 2 3
# 1 "/usr/local/lib/g++-include/fcntl.h" 1 3
extern "C" {
# 1 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/fcntl.h" 1 3
#pragma comment(exestr, "@(#) fcntl.h 7.1 91/08/14 ")
# 1 "/usr/local/lib/g++-include/sys/fcntl.h" 1 3
extern "C"
{
# 1 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/sys/fcntl.h" 1 3
#pragma comment(exestr, "@(#) fcntl.h 23.8 91/10/15 ")
struct flock {
short l_type;
short l_whence;
off_t l_start;
off_t l_len;
short l_sysid;
pid_t l_pid;
};
# 9 "/usr/local/lib/g++-include/sys/fcntl.h" 2 3
}
# 31 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/fcntl.h" 2 3
extern "C" {
extern int __hide_creat (const char *, unsigned short);
extern int __hide_fcntl (int, int, ...);
extern int __hide_open (const char *, int, int mode = 0666);
};
# 14 "/usr/local/lib/g++-include/fcntl.h" 2 3
int fcntl(int, int, ...);
int creat (...) ;
int open (...) ;
}
# 31 "/usr/local/lib/g++-include/std.h" 2 3
extern "C" {
int strcasecmp (...) ;
}
# 24 "../vsxconf.cc" 2
# 1 "/usr/local/lib/g++-include/time.h" 1 3
extern "C" {
# 44 "/usr/local/lib/g++-include/time.h" 3
# 1 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/time.h" 1 3
#pragma comment(exestr, "@(#) time.h 7.2 91/08/14 ")
# 39 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/time.h" 3
struct tm {
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
long __tm_tzadj;
char __tm_name[50 ];
};
# 88 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/time.h" 3
extern "C" {
extern clock_t __hide_clock (void);
extern double __hide_difftime (time_t, time_t);
extern time_t __hide_mktime (struct tm *);
extern time_t __hide_time (time_t *);
extern char *__hide_asctime (const struct tm *);
extern char *__hide_ctime (const time_t *);
extern struct tm *__hide_gmtime (const time_t *);
extern struct tm *__hide_localtime (const time_t *);
extern _G_size_t __hide_strftime (char *, _G_size_t , const char *, const struct tm *);
};
# 136 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/time.h" 3
# 49 "/usr/local/lib/g++-include/time.h" 2 3
extern char* asctime (...) ;
extern char* ctime (...) ;
double difftime (...) ;
extern struct tm* gmtime (...) ;
extern struct tm* localtime (...) ;
extern _G_time_t mktime(struct tm*);
extern _G_size_t strftime (...) ;
extern void tzset();
extern void tzsetwall();
extern int getitimer(int, struct itimerval*);
extern int setitimer (...) ;
extern int gettimeofday(struct timeval*, struct timezone*);
extern int settimeofday (...) ;
extern int stime (...) ;
extern int dysize(int);
long clock(void);
_G_time_t time(_G_time_t*);
unsigned ualarm(unsigned, unsigned);
unsigned usleep(unsigned);
void profil (...) ;
}
# 25 "../vsxconf.cc" 2
# 1 ".././inc/CurCU.h" 1
class ControlUnit;
class Diu;
class Scu;
class sym_ent;
class CpuHw;
class SmIdent;
# 1 ".././inc/Fixup.h" 1
# 1 ".././inc/Stamp.h" 1
# 1 "./istring.h" 1
# 1 "/usr/local/lib/g++-include/std.h" 1 3
# 37 "/usr/local/lib/g++-include/std.h" 3
# 14 "./istring.h" 2
# 1 "/usr/local/lib/g++-include/stdio.h" 1 3
# 174 "/usr/local/lib/g++-include/stdio.h" 3
# 15 "./istring.h" 2
# 1 "./istr_buf.h" 1
class istr_buf
{
unsigned int buf_len;
void resize(unsigned int min);
public:
void *string;
unsigned int len;
istr_buf() { string = 0; len = 0, buf_len = 0; };
void clear() { if (string) delete string; string = 0; len = 0; buf_len = 0; };
~istr_buf() { clear(); }
void put(const void *p, unsigned int l, int offset = 0);
};
# 16 "./istring.h" 2
class istring : public istr_buf
{
public:
istring();
void puts() { ::fputs((char *)string, (&_iob [2]) ); ::fputc('\n', (&_iob [2]) );};
operator char *() { return (char *)string; };
operator const char *() { return (const char *)string; };
istring & operator <<(const char *);
istring & operator <<(const int );
istring & operator <<(const unsigned int );
istring & operator <<(const char );
istring & operator <<(const void *);
istring & operator <<(istring &p) { return *this << (char *)p.string; };
};
# 6 ".././inc/Stamp.h" 2
# 1 ".././inc/trace.h" 1
# 1 ".././inc/Object.h" 1
class Object
{
int j;
public:
int operator == (Object &x) { return this == &x; };
};
# 5 ".././inc/trace.h" 2
class trace
{
public:
int con;
trace() { con = 0; };
};
# 1 "/usr/local/lib/g++-include/std.h" 1 3
# 37 "/usr/local/lib/g++-include/std.h" 3
# 19 ".././inc/trace.h" 2
void trputs(int, char *);
extern int Trace_Indent;
# 46 ".././inc/trace.h"
# 1 "./istring.h" 1
# 32 "./istring.h"
# 64 ".././inc/trace.h" 2
# 7 ".././inc/Stamp.h" 2
class Stamp : public trace
{
public:
const char *file;
int line;
Stamp();
friend istring & operator << (istring &, const Stamp &);
};
# 53 ".././inc/Fixup.h" 2
# 1 "./List.h" 1
# 1 "/usr/local/lib/g++-include/std.h" 1 3
# 37 "/usr/local/lib/g++-include/std.h" 3
# 138 "./List.h" 2
class ListEnt
{
public:
void *car;
ListEnt *cdr;
ListEnt(void *a) : car(a) { cdr = 0; };
ListEnt(void *a, ListEnt *d) : car(a), cdr(d) { } ;
};
class ListBase {
public:
int len;
};
class List : public ListBase {
public:
ListEnt *cdr;
List() { cdr = 0; len = 0; };
void *& operator>>=(void *);
void *& operator<<=(void *p)
{ cdr = new ListEnt (p, cdr);
len++;
return cdr->car;
};
void clear();
void *& operator [] (int);
List & operator = (List &l) {
clear();
cdr = l.cdr;
len = l.len;
return *this;
};
~List() { clear(); };
};
class ListIterator
{
ListEnt *Iterator;
public:
ListIterator(List &);
void *& operator()();
int operator()(void *&);
void operator =(List &);
};
class SpliceListIterator
{
ListEnt *Iterator;
ListEnt **splice_before;
ListEnt **splice_after;
List *list;
public:
SpliceListIterator(List &l);
void operator = (List &l);
void operator >>= (void *p);
void operator <<= (void *p);
int operator () (void *&);
void *& operator ()();
void operator ! ();
};
# 248 "./List.h"
# 262 "./List.h"
# 297 "./List.h"
# 54 ".././inc/Fixup.h" 2
class Cdecl;
class baseCdecl;
class sym_ent;
class Fixer
{
private:
protected:
public:
Stamp stamp;
Fixer();
virtual void callback();
};
class Fixup : public Stamp
{
private:
protected:
sym_ent *sy;
void **where;
char *type;
Fixer *who;
public:
Fixup(sym_ent *s, char *t, void **w, Fixer *wh = 0);
friend istring & operator << (istring &, Fixup &);
void fixit();
void callit();
};
class FixupList : public List {public: FixupList () : List() {};
FixupList & operator =(List &l) { *(List *)this = l; return *this; };
Fixup *& operator[](int i) { return *(Fixup **)&((*(List*)this)[i]); }; };
class FixupListIterator : public ListIterator {public: FixupListIterator ( FixupList &l) : ListIterator(l) {};
Fixup *& operator()() { return *(Fixup **)&((*(ListIterator *)this)()); };
int operator()(Fixup *&p) { return (*(ListIterator *)this)(*( void **)&p); };
void operator =(FixupList &l) { *(ListIterator *)this = *(List *)&l; };};
class FixupSpliceListIterator : public SpliceListIterator {public: FixupSpliceListIterator ( FixupList &l) : SpliceListIterator(l) {};
Fixup *& operator()() { return *(Fixup **)&((*(SpliceListIterator *)this)()); };
int operator()(Fixup *&p) { return (*(SpliceListIterator *)this)(*(void **)&p); };
void operator =(FixupList &l) { *(SpliceListIterator *)this = *(List *)&l; };
} ;
void FixList(List &, sym_ent *, char*);
# 41 ".././inc/CurCU.h" 2
class CurCU {
private:
ControlUnit *cu;
protected:
FixupList fixups;
void doFixups();
public:
CurCU();
int parsing() { return (int)cu; }
int isDiu();
int isScu();
ControlUnit * Cu();
Diu * getDiu();
Scu * getScu();
void newCu(sym_ent *Nam, CpuHw *Hw, int Type, SmIdent *smid);
void makeDiu(sym_ent *Nam, CpuHw *Hw, SmIdent *smid);
void makeScu(sym_ent *Nam, CpuHw *Hw, SmIdent *smid);
~CurCU() {}
void doCurCU();
friend void operator >>= (CurCU &, Fixup *);
};
extern CurCU * ccu;
# 27 "../vsxconf.cc" 2
# 1 ".././inc/Hardware.h" 1
# 1 "./istring.h" 1
# 32 "./istring.h"
# 40 ".././inc/Hardware.h" 2
# 1 ".././inc/Port.h" 1
# 1 ".././inc/Fixup.h" 1
# 96 ".././inc/Fixup.h"
# 38 ".././inc/Port.h" 2
# 1 ".././inc/Index.h" 1
# 1 "./istring.h" 1
# 32 "./istring.h"
# 39 ".././inc/Index.h" 2
class Index
{
int val;
public:
Index(int);
Index(const Index &i) : val(i.val) {};
Index() : val(0) {};
operator int() const { return val; };
Index & operator ++() { val++; return * this; };
Index & operator = (int i) { val = i; return * this; };
friend istring & operator <<(istring &s, const Index &i)
{ s << i.val + 1; return s; };
};
# 39 ".././inc/Port.h" 2
class Card;
class Dsac;
class Sac;
class sym_ent;
class Service;
class ser_cars;
enum PortUserType { _Illegal,
_Line, _Connect, _Ded,
_Mouse_In, _Mouse_Out, _Miu, _Pcu };
enum multproto {
NONE,
RMJ,
MABON
};
class Port : public Fixer
{
private:
void con_sub();
static PortUserType CurUse;
static ser_cars *CurSC;
protected:
Card *card;
Index ssbd_index;
int vsx_addr;
PortUserType t;
ser_cars *SerCars;
int comi_indx;
virtual void PortName(istring &);
public:
Port(sym_ent*, int);
Port(int);
Port(Port &);
virtual ~Port() {}
void callback();
static void setCurUse(PortUserType T);
static PortUserType getCurUse();
static ser_cars * getCurSerC();
int getAddr();
int isSwitchingLine(Service *s);
int setVideoPortUsed();
const char *getCardName();
int getCardType();
int onSwitchCard();
Dsac * getDsacCard();
Sac * getSacCard();
int getCardAddr();
Index getSSBDIndex();
PortUserType getUserType();
int getComiIndx() { return comi_indx; }
ser_cars * getSerC() { return SerCars; }
virtual multproto getProtocol();
virtual int getStation();
friend istring & operator << (istring &, Port &);
};
class PortList : public List {public: PortList () : List() {};
PortList & operator =(List &l) { *(List *)this = l; return *this; };
Port *& operator[](int i) { return *(Port **)&((*(List*)this)[i]); }; };
class PortListIterator : public ListIterator {public: PortListIterator ( PortList &l) : ListIterator(l) {};
Port *& operator()() { return *(Port **)&((*(ListIterator *)this)()); };
int operator()(Port *&p) { return (*(ListIterator *)this)(*( void **)&p); };
void operator =(PortList &l) { *(ListIterator *)this = *(List *)&l; };};
class PortSpliceListIterator : public SpliceListIterator {public: PortSpliceListIterator ( PortList &l) : SpliceListIterator(l) {};
Port *& operator()() { return *(Port **)&((*(SpliceListIterator *)this)()); };
int operator()(Port *&p) { return (*(SpliceListIterator *)this)(*(void **)&p);
};
void operator =(PortList &l) { *(SpliceListIterator *)this = *(List *)&l; };} ;
class MultiPort;
class MultiPortList : public List {public: MultiPortList () : List() {};
MultiPortList & operator =(List &l) { *(List *)this = l; return *this; };
MultiPort *& operator[](int i) { return *(MultiPort **)&((*(List*)this)[i]); }; };
class MultiPortListIterator : public ListIterator {public: MultiPortListIterator ( MultiPortList &l) : ListIterator(l) {};
MultiPort *& operator()() { return *(MultiPort **)&((*(ListIterator *)this)()); };
int operator()(MultiPort *&p) { return (*(ListIterator *)this)(*( void **)&p); };
void operator =(MultiPortList &l) { *(ListIterator *)this = *(List *)&l; };};
class MultiPortSpliceListIterator : public SpliceListIterator {public: MultiPortSpliceListIterator ( MultiPortList &l) : SpliceListIterator(l) {};
MultiPort *& operator()() { return *(MultiPort **)&((*(SpliceListIterator *)this)()); };
int operator()(MultiPort *&p) { return (*(SpliceListIterator *)this)(*(void **)&p); };
void operator =(MultiPortList &l) { *(SpliceListIterator *)this = *(List *)&l; };} ;
class MultiPort : public Port
{
private:
static MultiPortList * mps;
Index station;
multproto protocol;
int p_p_addr;
protected:
public:
static void initMultiPorts();
static void gvalidMultiPorts();
MultiPort(multproto p, sym_ent *s, int port, int stat);
void callback();
virtual multproto getProtocol() { return protocol; }
virtual int getStation() { return station; }
~MultiPort() {};
};
class mpCheck
{
private:
int bca;
int numlog;
MultiPort * as[16];
public:
mpCheck(int b);
int getBCA() { return bca; }
void setStation(MultiPort * mp, int s, int pp);
~mpCheck();
friend class MultiPort;
};
class mpCheckList : public List {public: mpCheckList () : List() {};
mpCheckList & operator =(List &l) { *(List *)this = l; return *this; };
mpCheck *& operator[](int i) { return *(mpCheck **)&((*(List*)this)[i]); };
friend mpCheck * operator >> (mpCheckList &, int);
};
class mpCheckListIterator : public ListIterator {public:
mpCheckListIterator ( mpCheckList &l) : ListIterator(l) {};
mpCheck *& operator()() { return *(mpCheck **)&((*(ListIterator *)this)()); };
int operator()(mpCheck *&p) { return (*(ListIterator *)this)(*( void **)&p); };
void operator =(mpCheckList &l) { *(ListIterator *)this = *(List *)&l; };};
class mpCheckSpliceListIterator : public SpliceListIterator {public:
mpCheckSpliceListIterator ( mpCheckList &l) : SpliceListIterator(l) {};
mpCheck *& operator()() { return *(mpCheck **)&((*(SpliceListIterator *)this)()); };
int operator()(mpCheck *&p) { return (*(SpliceListIterator *)this)(*(void **)&p); };
void operator =(mpCheckList &l) { *(SpliceListIterator *)this = *(List *)&l; };} ;
class PortMap
{
private:
protected:
public:
PortMap();
virtual void doPortMap() = 0;
virtual ~PortMap() {}
};
class PortMapList : public List {public: PortMapList () : List() {};
PortMapList & operator =(List &l) { *(List *)this = l; return *this; };
PortMap *& operator[](int i) { return *(PortMap **)&((*(List*)this)[i]); }; };
class PortMapListIterator : public ListIterator {public: PortMapListIterator ( PortMapList &l) : ListIterator(l) {};
PortMap *& operator()() { return *(PortMap **)&((*(ListIterator *)this)()); };
int operator()(PortMap *&p) { return (*(ListIterator *)this)(*( void **)&p); };
void operator =(PortMapList &l) { *(ListIterator *)this = *(List *)&l; };};
class PortMapSpliceListIterator : public SpliceListIterator {public: PortMapSpliceListIterator ( PortMapList &l) : SpliceListIterator(l) {};
PortMap *& operator()() { return *(PortMap **)&((*(SpliceListIterator *)this)()); };
int operator()(PortMap *&p) { return (*(SpliceListIterator *)this)(*(void **)&p); };
void operator =(PortMapList &l) { *(SpliceListIterator *)this = *(List *)&l; };} ;
class ServerPort : public Port, virtual public PortMap
{
private:
protected:
public:
ServerPort();
~ServerPort() {};
};
class TtyPort : virtual public ServerPort
{
private:
istring *tty;
protected:
public:
TtyPort(istring *ttyn);
~TtyPort() {};
virtual void PortName(istring &);
void doPortMap();
};
class NetPort : virtual public ServerPort
{
private:
char *netaddrs;
int sckt;
int sess;
protected:
public:
NetPort(char *neta, int sk, int se);
~NetPort();
virtual void PortName(istring &);
void doPortMap();
};
class DcuPort : virtual public PortMap
{
private:
istring *tty;
protected:
public:
DcuPort(istring *ttyn);
~DcuPort() {};
void doPortMap();
};
# 41 ".././inc/Hardware.h" 2
enum CpuType{
I8086,
I80286,
UHOST
};
enum RamSize {
RAM256K,
RAM512K,
RAM1M,
URAM
};
enum HramSize {
NOHRAM,
HRAM2M,
HRAM4M,
UFILE
};
class CpuHw {
private:
static int rev;
static int rel;
static int iss;
static char *vs;
static int getvd(char **);
CpuType Cpu;
RamSize Ram;
HramSize Hram;
protected:
public:
CpuHw(CpuType c, RamSize r, HramSize h);
CpuHw();
~CpuHw() {}
static void setVsxRel(char *rs);
static int postVsxRel(int rel);
int atleastV6();
int atleast512K();
int hasHram();
int isUnixHost();
istring & prntHw(istring &s);
friend istring & operator << (istring &s, CpuHw &c)
{ c.prntHw(s); return s; };
};
extern void syntax();
class SmConnect;
class SmIdent
{
private:
int port;
char *na;
protected:
public:
SmIdent(int ttyp);
SmIdent(char *neta, int tsp);
void validate(CpuHw *);
~SmIdent();
friend class SmConnect;
};
class SmConnect : virtual public PortMap
{
private:
int sckt;
int ses;
char *na;
protected:
public:
SmConnect();
void setSmCon(char *neta, int so, int se);
void doPortMap();
~SmConnect();
};
# 28 "../vsxconf.cc" 2
# 1 ".././inc/Error.h" 1
extern int errors;
extern int error_limit;
extern void Error();
# 1 "./except.h" 1
# 1 "/usr/local/lib/g++-include/setjmp.h" 1
extern "C" {
# 1 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/setjmp.h" 1 3
#pragma comment(exestr, "@(#) setjmp.h 7.1 91/08/14 ")
# 95 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/setjmp.h" 3
typedef int jmp_buf[6 ];
extern "C" {
extern int C_header_setjmp (jmp_buf);
extern void C_header_longjmp (jmp_buf, int);
};
# 136 "/usr/local/lib/gcc-lib/i386-sco3.2v4.0/2.3.3/include/setjmp.h" 3
# 15 "/usr/local/lib/g++-include/setjmp.h" 2
extern int setjmp(jmp_buf);
extern void longjmp(jmp_buf, int);
}
# 77 "./except.h" 2
jmp_buf except_stack[10 ];
int except_lev = 0;
volatile int except_val;
# 10 ".././inc/Error.h" 2
# 31 "../vsxconf.cc" 2
int rep_level=1;
char * p_nam;
char * p_ver = "Pre-Rel-1.2.1";
void syntax();
int opt_text_output = 0;
int opt_binary_output = 1;
main(int argc, char ** argv)
{
p_nam = argv[0];
CpuHw::setVsxRel("6.7.7" );
while ( (--argc) ) {
if ( argv[argc][0] == '-' ) {
switch( argv[argc][1] ) {
case 'v' :
rep_level = atoi( &argv[argc][2] );
break;
case 'r' :
CpuHw::setVsxRel(&argv[argc][2]);
break;
case 't' :
opt_text_output = 1;
break;
default :
syntax();
break;
}
} else
syntax();
}
init_lex();
if ((except_val = setjmp(except_stack[except_lev++])) == 0) {
yyparse();
ccu->doCurCU();
}
else if (1 == except_val) {
exit(1);
}
else if (2 == except_val) { exit(1); }
else { if (--except_lev) { { longjmp(except_stack[except_lev-1], except_val); } } else { fprintf( (&_iob [2]) , "unhandled exception %d\n", except_val); exit(1); }} except_lev--; ;
exit(0);
}
void syntax()
{
printf("\n\n%s [-t] [-rn.n.n] [-vn]\n\n",p_nam);
puts("Where :");
puts("\t-t Sets the text configuration output option on");
puts("\t-rn.n.n Sets the VSX software release to generate config for");
puts("\t-vn Sets verbose mode to level n where :");
puts("\t \t0 - Errors 1 - & Warnings 2 - & Information");
exit(1);
}
void write_file_hd(FILE *f, char c)
{
time_t l;
char ts[30];
strcpy(ts,ctime(&(l = time((time_t *)0))));
ts[23]='\0';
fprintf(f, "%c/* AUTOMATICALLY GENERATED FILE - DO NOT EDIT */\n",c);
fprintf(f, "%c/* Generated by : %s \tV%s */\n",c,p_nam,p_ver);
fprintf(f, "%c/* Creation date : %s */\n",c,ts);
}
Technical Details
Message-ID:
<9301221417.AA14585@enet-gw.pa.dec.com>Path:
arc1-ca.pugleaf.net!sparky!uunet!zaphod.mps.ohio-state.edu!magnus.acs.ohio-state.edu!cis.ohio-state.edu!uproar.enet.DEc.COM!Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!sparky!uunet!zaphod.mps.ohio-state.edu!magnus.acs.ohio-state.edu!cis.ohio-state.edu!uproar.enet.DEc.COM! From: @uproar.enet.DEc.COM (Tim Murnaghan, ime196::tpm) Newsgroups: gnu.g++.bug Subject: setjmp problem Date: 22 Jan 1993 21:25:41 -0500 Organization: GNUs Not Usenet Lines: 4098 Sender: daemon@cis.ohio-state.edu Approved: bug-g++@prep.ai.mit.edu Distribution: gnu Message-ID: <9301221417.AA14585@enet-gw.pa.dec.com>