From mboxrd@z Thu Jan 1 00:00:00 1970 From: visser@cs.uu.nl To: gcc-gnats@gcc.gnu.org Subject: c/4014: gcc reports internal erro when compiling file bafio.c Date: Mon, 13 Aug 2001 04:16:00 -0000 Message-id: <200109131015.f8DAFUp02565@node11794.a2000.nl> X-SW-Source: 2001-08/msg00340.html List-Id: >Number: 4014 >Category: c >Synopsis: gcc reports internal erro when compiling file bafio.c >Confidential: no >Severity: critical >Priority: medium >Responsible: unassigned >State: open >Class: ice-on-legal-code >Submitter-Id: net >Arrival-Date: Mon Aug 13 04:16:03 PDT 2001 >Closed-Date: >Last-Modified: >Originator: Eelco Visser >Release: 3.0 >Organization: Utrecht University >Environment: System: Linux node11794.a2000.nl 2.2.17-8 #1 Fri Nov 17 16:22:25 EST 2000 i686 unknown Architecture: i686 host: i686-pc-linux-gnu build: i686-pc-linux-gnu target: i686-pc-linux-gnu configured with: ../gcc-3.0/configure --prefix=/usr/local >Description: gcc chokes when compiling the file bafio.c gcc -Wall -O4 -DPACKAGE=\"aterm\" -DVERSION=\"1.5.3\" -DHAVE_STRDUP=1 -DHAVE_LIBDL=1 -DHAVE_LRAND48=1 -DHAVE_SRAND48=1 -I. -I. -DNDEBUG -save-temps -c bafio.c -o bafio-gcc.o bafio.c: In function `write_baf': bafio.c:1149: Internal error: Segmentation fault Please submit a full bug report, with preprocessed source if appropriate. See for instructions. gmake: *** [bafio-gcc.o] Error 1 >How-To-Repeat: command: gcc -Wall -O4 -DPACKAGE=\"aterm\" -DVERSION=\"1.5.3\" -DHAVE_STRDUP=1 -DHAVE_LIBDL=1 -DHAVE_LRAND48=1 -DHAVE_SRAND48=1 -I. -I. -DNDEBUG -save-temps -c bafio.c -o bafio-gcc.o file (bafio.i): # 3 "bafio.c" # 1 "/usr/include/stdio.h" 1 3 # 27 "/usr/include/stdio.h" 3 # 1 "/usr/include/features.h" 1 3 # 283 "/usr/include/features.h" 3 # 1 "/usr/include/sys/cdefs.h" 1 3 # 284 "/usr/include/features.h" 2 3 # 311 "/usr/include/features.h" 3 # 1 "/usr/include/gnu/stubs.h" 1 3 # 312 "/usr/include/features.h" 2 3 # 28 "/usr/include/stdio.h" 2 3 # 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stddef.h" 1 3 # 199 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stddef.h" 3 typedef unsigned int size_t; # 34 "/usr/include/stdio.h" 2 3 # 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stdarg.h" 1 3 # 43 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stdarg.h" 3 typedef __builtin_va_list __gnuc_va_list; # 39 "/usr/include/stdio.h" 2 3 # 1 "/usr/include/bits/types.h" 1 3 # 26 "/usr/include/bits/types.h" 3 # 1 "/usr/include/features.h" 1 3 # 27 "/usr/include/bits/types.h" 2 3 # 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stddef.h" 1 3 # 30 "/usr/include/bits/types.h" 2 3 typedef unsigned char __u_char; typedef unsigned short __u_short; typedef unsigned int __u_int; typedef unsigned long __u_long; __extension__ typedef unsigned long long int __u_quad_t; __extension__ typedef long long int __quad_t; # 49 "/usr/include/bits/types.h" 3 typedef signed char __int8_t; typedef unsigned char __uint8_t; typedef signed short int __int16_t; typedef unsigned short int __uint16_t; typedef signed int __int32_t; typedef unsigned int __uint32_t; __extension__ typedef signed long long int __int64_t; __extension__ typedef unsigned long long int __uint64_t; typedef __quad_t *__qaddr_t; typedef __u_quad_t __dev_t; typedef __u_int __uid_t; typedef __u_int __gid_t; typedef __u_long __ino_t; typedef __u_int __mode_t; typedef __u_int __nlink_t; typedef long int __off_t; typedef __quad_t __loff_t; typedef int __pid_t; typedef int __ssize_t; typedef __u_long __rlim_t; typedef __u_quad_t __rlim64_t; typedef __u_int __id_t; typedef struct { int __val[2]; } __fsid_t; typedef int __daddr_t; typedef char *__caddr_t; typedef long int __time_t; typedef unsigned int __useconds_t; typedef long int __suseconds_t; typedef long int __swblk_t; typedef long int __clock_t; typedef int __clockid_t; typedef int __timer_t; typedef unsigned long int __fd_mask; # 109 "/usr/include/bits/types.h" 3 typedef struct { __fd_mask __fds_bits[1024 / (8 * sizeof (__fd_mask))]; } __fd_set; typedef int __key_t; typedef unsigned short int __ipc_pid_t; typedef long int __blksize_t; typedef long int __blkcnt_t; typedef __quad_t __blkcnt64_t; typedef __u_long __fsblkcnt_t; typedef __u_quad_t __fsblkcnt64_t; typedef __u_long __fsfilcnt_t; typedef __u_quad_t __fsfilcnt64_t; typedef __u_quad_t __ino64_t; typedef __loff_t __off64_t; typedef long int __t_scalar_t; typedef unsigned long int __t_uscalar_t; typedef int __intptr_t; typedef unsigned int __socklen_t; # 1 "/usr/include/bits/pthreadtypes.h" 1 3 # 23 "/usr/include/bits/pthreadtypes.h" 3 # 1 "/usr/include/bits/sched.h" 1 3 # 68 "/usr/include/bits/sched.h" 3 struct __sched_param { int sched_priority; }; # 24 "/usr/include/bits/pthreadtypes.h" 2 3 struct _pthread_fastlock { long int __status; int __spinlock; }; typedef struct _pthread_descr_struct *_pthread_descr; typedef struct { int __detachstate; int __schedpolicy; struct __sched_param __schedparam; int __inheritsched; int __scope; size_t __guardsize; int __stackaddr_set; void *__stackaddr; size_t __stacksize; } pthread_attr_t; typedef struct { struct _pthread_fastlock __c_lock; _pthread_descr __c_waiting; } pthread_cond_t; typedef struct { int __dummy; } pthread_condattr_t; typedef unsigned int pthread_key_t; typedef struct { int __m_reserved; int __m_count; _pthread_descr __m_owner; int __m_kind; struct _pthread_fastlock __m_lock; } pthread_mutex_t; typedef struct { int __mutexkind; } pthread_mutexattr_t; typedef int pthread_once_t; # 140 "/usr/include/bits/pthreadtypes.h" 3 typedef unsigned long int pthread_t; # 166 "/usr/include/bits/types.h" 2 3 # 41 "/usr/include/stdio.h" 2 3 # 49 "/usr/include/stdio.h" 3 typedef struct _IO_FILE FILE; # 59 "/usr/include/stdio.h" 3 typedef struct _IO_FILE __FILE; # 69 "/usr/include/stdio.h" 3 # 1 "/usr/include/libio.h" 1 3 # 30 "/usr/include/libio.h" 3 # 1 "/usr/include/_G_config.h" 1 3 # 9 "/usr/include/_G_config.h" 3 # 1 "/usr/include/bits/types.h" 1 3 # 10 "/usr/include/_G_config.h" 2 3 # 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stddef.h" 1 3 # 287 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stddef.h" 3 typedef long int wchar_t; # 312 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stddef.h" 3 typedef unsigned int wint_t; # 15 "/usr/include/_G_config.h" 2 3 # 24 "/usr/include/_G_config.h" 3 # 1 "/usr/include/wchar.h" 1 3 # 45 "/usr/include/wchar.h" 3 # 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stddef.h" 1 3 # 46 "/usr/include/wchar.h" 2 3 # 1 "/usr/include/bits/wchar.h" 1 3 # 48 "/usr/include/wchar.h" 2 3 # 64 "/usr/include/wchar.h" 3 typedef struct { int __count; union { wint_t __wch; char __wchb[4]; } __value; } __mbstate_t; # 25 "/usr/include/_G_config.h" 2 3 typedef struct { __off_t __pos; __mbstate_t __state; } _G_fpos_t; typedef struct { __off64_t __pos; __mbstate_t __state; } _G_fpos64_t; # 44 "/usr/include/_G_config.h" 3 # 1 "/usr/include/gconv.h" 1 3 # 26 "/usr/include/gconv.h" 3 # 1 "/usr/include/features.h" 1 3 # 27 "/usr/include/gconv.h" 2 3 # 1 "/usr/include/wchar.h" 1 3 # 45 "/usr/include/wchar.h" 3 # 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stddef.h" 1 3 # 46 "/usr/include/wchar.h" 2 3 # 1 "/usr/include/bits/wchar.h" 1 3 # 48 "/usr/include/wchar.h" 2 3 # 29 "/usr/include/gconv.h" 2 3 # 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stddef.h" 1 3 # 31 "/usr/include/gconv.h" 2 3 enum { __GCONV_OK = 0, __GCONV_NOCONV, __GCONV_NODB, __GCONV_NOMEM, __GCONV_EMPTY_INPUT, __GCONV_FULL_OUTPUT, __GCONV_ILLEGAL_INPUT, __GCONV_INCOMPLETE_INPUT, __GCONV_ILLEGAL_DESCRIPTOR, __GCONV_INTERNAL_ERROR }; enum { __GCONV_IS_LAST = 0x0001, __GCONV_IGNORE_ERRORS = 0x0002 }; struct __gconv_step; struct __gconv_step_data; struct __gconv_loaded_object; struct __gconv_trans_data; typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *, __const unsigned char **, __const unsigned char *, unsigned char **, size_t *, int, int); typedef int (*__gconv_init_fct) (struct __gconv_step *); typedef void (*__gconv_end_fct) (struct __gconv_step *); typedef int (*__gconv_trans_fct) (struct __gconv_step *, struct __gconv_step_data *, void *, __const unsigned char *, __const unsigned char **, __const unsigned char *, unsigned char **, size_t *); typedef int (*__gconv_trans_context_fct) (void *, __const unsigned char *, __const unsigned char *, unsigned char *, unsigned char *); typedef int (*__gconv_trans_query_fct) (__const char *, __const char ***, size_t *); typedef int (*__gconv_trans_init_fct) (void **, const char *); typedef void (*__gconv_trans_end_fct) (void *); struct __gconv_trans_data { __gconv_trans_fct __trans_fct; __gconv_trans_context_fct __trans_context_fct; __gconv_trans_end_fct __trans_end_fct; void *__data; struct __gconv_trans_data *__next; }; struct __gconv_step { struct __gconv_loaded_object *__shlib_handle; __const char *__modname; int __counter; __const char *__from_name; __const char *__to_name; __gconv_fct __fct; __gconv_init_fct __init_fct; __gconv_end_fct __end_fct; int __min_needed_from; int __max_needed_from; int __min_needed_to; int __max_needed_to; int __stateful; void *__data; }; struct __gconv_step_data { unsigned char *__outbuf; unsigned char *__outbufend; int __flags; int __invocation_counter; int __internal_use; __mbstate_t *__statep; __mbstate_t __state; struct __gconv_trans_data *__trans; }; typedef struct __gconv_info { size_t __nsteps; struct __gconv_step *__steps; __extension__ struct __gconv_step_data __data[0]; } *__gconv_t; # 45 "/usr/include/_G_config.h" 2 3 typedef union { struct __gconv_info __cd; struct { struct __gconv_info __cd; struct __gconv_step_data __data; } __combined; } _G_iconv_t; typedef int _G_int16_t __attribute__ ((__mode__ (__HI__))); typedef int _G_int32_t __attribute__ ((__mode__ (__SI__))); typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__))); typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__))); # 31 "/usr/include/libio.h" 2 3 # 51 "/usr/include/libio.h" 3 # 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stdarg.h" 1 3 # 52 "/usr/include/libio.h" 2 3 # 158 "/usr/include/libio.h" 3 struct _IO_jump_t; struct _IO_FILE; # 168 "/usr/include/libio.h" 3 typedef void _IO_lock_t; struct _IO_marker { struct _IO_marker *_next; struct _IO_FILE *_sbuf; int _pos; # 191 "/usr/include/libio.h" 3 }; enum __codecvt_result { __codecvt_ok, __codecvt_partial, __codecvt_error, __codecvt_noconv }; # 263 "/usr/include/libio.h" 3 struct _IO_FILE { int _flags; char* _IO_read_ptr; char* _IO_read_end; char* _IO_read_base; char* _IO_write_base; char* _IO_write_ptr; char* _IO_write_end; char* _IO_buf_base; char* _IO_buf_end; char *_IO_save_base; char *_IO_backup_base; char *_IO_save_end; struct _IO_marker *_markers; struct _IO_FILE *_chain; int _fileno; int _blksize; __off_t _old_offset; unsigned short _cur_column; signed char _vtable_offset; char _shortbuf[1]; _IO_lock_t *_lock; # 307 "/usr/include/libio.h" 3 __off64_t _offset; void *__pad1; void *__pad2; int _mode; char _unused2[15 * sizeof (int) - 2 * sizeof (void *)]; }; typedef struct _IO_FILE _IO_FILE; struct _IO_FILE_plus; extern struct _IO_FILE_plus _IO_2_1_stdin_; extern struct _IO_FILE_plus _IO_2_1_stdout_; extern struct _IO_FILE_plus _IO_2_1_stderr_; # 346 "/usr/include/libio.h" 3 typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes); typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf, size_t __n); typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w); typedef int __io_close_fn (void *__cookie); # 398 "/usr/include/libio.h" 3 extern int __underflow (_IO_FILE *) ; extern int __uflow (_IO_FILE *) ; extern int __overflow (_IO_FILE *, int) ; extern wint_t __wunderflow (_IO_FILE *) ; extern wint_t __wuflow (_IO_FILE *) ; extern wint_t __woverflow (_IO_FILE *, wint_t) ; # 428 "/usr/include/libio.h" 3 extern int _IO_getc (_IO_FILE *__fp) ; extern int _IO_putc (int __c, _IO_FILE *__fp) ; extern int _IO_feof (_IO_FILE *__fp) ; extern int _IO_ferror (_IO_FILE *__fp) ; extern int _IO_peekc_locked (_IO_FILE *__fp) ; extern void _IO_flockfile (_IO_FILE *) ; extern void _IO_funlockfile (_IO_FILE *) ; extern int _IO_ftrylockfile (_IO_FILE *) ; # 458 "/usr/include/libio.h" 3 extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict, __gnuc_va_list, int *__restrict) ; extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict, __gnuc_va_list) ; extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t) ; extern size_t _IO_sgetn (_IO_FILE *, void *, size_t) ; extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int) ; extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int) ; extern void _IO_free_backup_area (_IO_FILE *) ; # 70 "/usr/include/stdio.h" 2 3 typedef _G_fpos_t fpos_t; # 122 "/usr/include/stdio.h" 3 # 1 "/usr/include/bits/stdio_lim.h" 1 3 # 123 "/usr/include/stdio.h" 2 3 extern FILE *stdin; extern FILE *stdout; extern FILE *stderr; extern int remove (__const char *__filename) ; extern int rename (__const char *__old, __const char *__new) ; extern FILE *tmpfile (void) ; # 154 "/usr/include/stdio.h" 3 extern char *tmpnam (char *__s) ; extern char *tmpnam_r (char *__s) ; # 171 "/usr/include/stdio.h" 3 extern char *tempnam (__const char *__dir, __const char *__pfx) __attribute__ ((__malloc__)); extern int fclose (FILE *__stream) ; extern int fflush (FILE *__stream) ; extern int fflush_unlocked (FILE *__stream) ; # 194 "/usr/include/stdio.h" 3 extern FILE *fopen (__const char *__restrict __filename, __const char *__restrict __modes) ; extern FILE *freopen (__const char *__restrict __filename, __const char *__restrict __modes, FILE *__restrict __stream) ; # 224 "/usr/include/stdio.h" 3 extern FILE *fdopen (int __fd, __const char *__modes) ; # 247 "/usr/include/stdio.h" 3 extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) ; extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, int __modes, size_t __n) ; extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, size_t __size) ; extern void setlinebuf (FILE *__stream) ; extern int fprintf (FILE *__restrict __stream, __const char *__restrict __format, ...) ; extern int printf (__const char *__restrict __format, ...) ; extern int sprintf (char *__restrict __s, __const char *__restrict __format, ...) ; extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) ; extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg) ; extern int vsprintf (char *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) ; extern int snprintf (char *__restrict __s, size_t __maxlen, __const char *__restrict __format, ...) __attribute__ ((__format__ (__printf__, 3, 4))); extern int __vsnprintf (char *__restrict __s, size_t __maxlen, __const char *__restrict __format, __gnuc_va_list __arg) __attribute__ ((__format__ (__printf__, 3, 0))); extern int vsnprintf (char *__restrict __s, size_t __maxlen, __const char *__restrict __format, __gnuc_va_list __arg) __attribute__ ((__format__ (__printf__, 3, 0))); # 321 "/usr/include/stdio.h" 3 extern int fscanf (FILE *__restrict __stream, __const char *__restrict __format, ...) ; extern int scanf (__const char *__restrict __format, ...) ; extern int sscanf (__const char *__restrict __s, __const char *__restrict __format, ...) ; # 347 "/usr/include/stdio.h" 3 extern int fgetc (FILE *__stream) ; extern int getc (FILE *__stream) ; extern int getchar (void) ; extern int getc_unlocked (FILE *__stream) ; extern int getchar_unlocked (void) ; extern int fgetc_unlocked (FILE *__stream) ; extern int fputc (int __c, FILE *__stream) ; extern int putc (int __c, FILE *__stream) ; extern int putchar (int __c) ; extern int fputc_unlocked (int __c, FILE *__stream) ; extern int putc_unlocked (int __c, FILE *__stream) ; extern int putchar_unlocked (int __c) ; extern int getw (FILE *__stream) ; extern int putw (int __w, FILE *__stream) ; extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) ; # 413 "/usr/include/stdio.h" 3 extern char *gets (char *__s) ; # 437 "/usr/include/stdio.h" 3 extern int fputs (__const char *__restrict __s, FILE *__restrict __stream) ; # 447 "/usr/include/stdio.h" 3 extern int puts (__const char *__s) ; extern int ungetc (int __c, FILE *__stream) ; extern size_t fread (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) ; extern size_t fwrite (__const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __s) ; extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) ; extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) ; extern int fseek (FILE *__stream, long int __off, int __whence) ; extern long int ftell (FILE *__stream) ; extern void rewind (FILE *__stream) ; # 485 "/usr/include/stdio.h" 3 typedef __off_t off_t; # 507 "/usr/include/stdio.h" 3 extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) ; extern int fsetpos (FILE *__stream, __const fpos_t *__pos) ; # 543 "/usr/include/stdio.h" 3 extern void clearerr (FILE *__stream) ; extern int feof (FILE *__stream) ; extern int ferror (FILE *__stream) ; extern void clearerr_unlocked (FILE *__stream) ; extern int feof_unlocked (FILE *__stream) ; extern int ferror_unlocked (FILE *__stream) ; extern void perror (__const char *__s) ; extern int sys_nerr; extern __const char *__const sys_errlist[]; # 574 "/usr/include/stdio.h" 3 extern int fileno (FILE *__stream) ; extern int fileno_unlocked (FILE *__stream) ; extern FILE *popen (__const char *__command, __const char *__modes) ; extern int pclose (FILE *__stream) ; extern char *ctermid (char *__s) ; # 621 "/usr/include/stdio.h" 3 extern void flockfile (FILE *__stream) ; extern int ftrylockfile (FILE *__stream) ; extern void funlockfile (FILE *__stream) ; # 642 "/usr/include/stdio.h" 3 # 1 "/usr/include/bits/stdio.h" 1 3 # 32 "/usr/include/bits/stdio.h" 3 extern __inline int vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg) { return vfprintf (stdout, __fmt, __arg); } extern __inline int getchar (void) { return _IO_getc (stdin); } extern __inline int getc_unlocked (FILE *__fp) { return ((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++); } extern __inline int getchar_unlocked (void) { return ((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++); } extern __inline int putchar (int __c) { return _IO_putc (__c, stdout); } extern __inline int fputc_unlocked (int __c, FILE *__stream) { return (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); } extern __inline int putc_unlocked (int __c, FILE *__stream) { return (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c))); } extern __inline int putchar_unlocked (int __c) { return (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c))); } # 110 "/usr/include/bits/stdio.h" 3 extern __inline int feof_unlocked (FILE *__stream) { return (((__stream)->_flags & 0x10) != 0); } extern __inline int ferror_unlocked (FILE *__stream) { return (((__stream)->_flags & 0x20) != 0); } # 643 "/usr/include/stdio.h" 2 3 # 4 "bafio.c" 2 # 1 "/usr/include/stdlib.h" 1 3 # 25 "/usr/include/stdlib.h" 3 # 1 "/usr/include/features.h" 1 3 # 26 "/usr/include/stdlib.h" 2 3 # 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stddef.h" 1 3 # 34 "/usr/include/stdlib.h" 2 3 # 94 "/usr/include/stdlib.h" 3 typedef struct { int quot; int rem; } div_t; typedef struct { long int quot; long int rem; } ldiv_t; # 133 "/usr/include/stdlib.h" 3 extern size_t __ctype_get_mb_cur_max (void) ; extern double atof (__const char *__nptr) __attribute__ ((__pure__)); extern int atoi (__const char *__nptr) __attribute__ ((__pure__)); extern long int atol (__const char *__nptr) __attribute__ ((__pure__)); __extension__ extern long long int atoll (__const char *__nptr) __attribute__ ((__pure__)); extern double strtod (__const char *__restrict __nptr, char **__restrict __endptr) ; # 163 "/usr/include/stdlib.h" 3 extern long int strtol (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; extern unsigned long int strtoul (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; __extension__ extern long long int strtoq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; __extension__ extern unsigned long long int strtouq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; __extension__ extern long long int strtoll (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; __extension__ extern unsigned long long int strtoull (__const char *__restrict __nptr, char **__restrict __endptr, int __base) ; # 250 "/usr/include/stdlib.h" 3 extern double __strtod_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __group) ; extern float __strtof_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __group) ; extern long double __strtold_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __group) ; extern long int __strtol_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) ; extern unsigned long int __strtoul_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) ; __extension__ extern long long int __strtoll_internal (__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) ; __extension__ extern unsigned long long int __strtoull_internal (__const char * __restrict __nptr, char **__restrict __endptr, int __base, int __group) ; # 294 "/usr/include/stdlib.h" 3 extern __inline double strtod (__const char *__restrict __nptr, char **__restrict __endptr) { return __strtod_internal (__nptr, __endptr, 0); } extern __inline long int strtol (__const char *__restrict __nptr, char **__restrict __endptr, int __base) { return __strtol_internal (__nptr, __endptr, __base, 0); } extern __inline unsigned long int strtoul (__const char *__restrict __nptr, char **__restrict __endptr, int __base) { return __strtoul_internal (__nptr, __endptr, __base, 0); } # 326 "/usr/include/stdlib.h" 3 __extension__ extern __inline long long int strtoq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) { return __strtoll_internal (__nptr, __endptr, __base, 0); } __extension__ extern __inline unsigned long long int strtouq (__const char *__restrict __nptr, char **__restrict __endptr, int __base) { return __strtoull_internal (__nptr, __endptr, __base, 0); } __extension__ extern __inline long long int strtoll (__const char *__restrict __nptr, char **__restrict __endptr, int __base) { return __strtoll_internal (__nptr, __endptr, __base, 0); } __extension__ extern __inline unsigned long long int strtoull (__const char * __restrict __nptr, char **__restrict __endptr, int __base) { return __strtoull_internal (__nptr, __endptr, __base, 0); } extern __inline double atof (__const char *__nptr) { return strtod (__nptr, (char **) ((void *)0)); } extern __inline int atoi (__const char *__nptr) { return (int) strtol (__nptr, (char **) ((void *)0), 10); } extern __inline long int atol (__const char *__nptr) { return strtol (__nptr, (char **) ((void *)0), 10); } __extension__ extern __inline long long int atoll (__const char *__nptr) { return strtoll (__nptr, (char **) ((void *)0), 10); } # 385 "/usr/include/stdlib.h" 3 extern char *l64a (long int __n) ; extern long int a64l (__const char *__s) __attribute__ ((__pure__)); # 1 "/usr/include/sys/types.h" 1 3 # 26 "/usr/include/sys/types.h" 3 # 1 "/usr/include/features.h" 1 3 # 27 "/usr/include/sys/types.h" 2 3 # 1 "/usr/include/bits/types.h" 1 3 # 31 "/usr/include/sys/types.h" 2 3 typedef __u_char u_char; typedef __u_short u_short; typedef __u_int u_int; typedef __u_long u_long; typedef __quad_t quad_t; typedef __u_quad_t u_quad_t; typedef __fsid_t fsid_t; typedef __loff_t loff_t; typedef __ino_t ino_t; # 58 "/usr/include/sys/types.h" 3 typedef __dev_t dev_t; typedef __gid_t gid_t; typedef __mode_t mode_t; typedef __nlink_t nlink_t; typedef __uid_t uid_t; # 96 "/usr/include/sys/types.h" 3 typedef __pid_t pid_t; typedef __id_t id_t; typedef __ssize_t ssize_t; typedef __daddr_t daddr_t; typedef __caddr_t caddr_t; typedef __key_t key_t; # 126 "/usr/include/sys/types.h" 3 # 1 "/usr/include/time.h" 1 3 # 67 "/usr/include/time.h" 3 # 1 "/usr/include/bits/types.h" 1 3 # 68 "/usr/include/time.h" 2 3 typedef __time_t time_t; # 79 "/usr/include/time.h" 3 # 1 "/usr/include/bits/types.h" 1 3 # 80 "/usr/include/time.h" 2 3 typedef __clockid_t clockid_t; # 91 "/usr/include/time.h" 3 # 1 "/usr/include/bits/types.h" 1 3 # 92 "/usr/include/time.h" 2 3 typedef __timer_t timer_t; # 127 "/usr/include/sys/types.h" 2 3 # 140 "/usr/include/sys/types.h" 3 # 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stddef.h" 1 3 # 141 "/usr/include/sys/types.h" 2 3 typedef unsigned long int ulong; typedef unsigned short int ushort; typedef unsigned int uint; # 184 "/usr/include/sys/types.h" 3 typedef int int8_t __attribute__ ((__mode__ (__QI__))); typedef int int16_t __attribute__ ((__mode__ (__HI__))); typedef int int32_t __attribute__ ((__mode__ (__SI__))); typedef int int64_t __attribute__ ((__mode__ (__DI__))); typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__))); typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__))); typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__))); typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__))); typedef int register_t __attribute__ ((__mode__ (__word__))); # 206 "/usr/include/sys/types.h" 3 # 1 "/usr/include/endian.h" 1 3 # 22 "/usr/include/endian.h" 3 # 1 "/usr/include/features.h" 1 3 # 23 "/usr/include/endian.h" 2 3 # 37 "/usr/include/endian.h" 3 # 1 "/usr/include/bits/endian.h" 1 3 # 38 "/usr/include/endian.h" 2 3 # 207 "/usr/include/sys/types.h" 2 3 # 1 "/usr/include/sys/select.h" 1 3 # 25 "/usr/include/sys/select.h" 3 # 1 "/usr/include/features.h" 1 3 # 26 "/usr/include/sys/select.h" 2 3 # 1 "/usr/include/bits/types.h" 1 3 # 29 "/usr/include/sys/select.h" 2 3 # 1 "/usr/include/bits/select.h" 1 3 # 32 "/usr/include/sys/select.h" 2 3 # 1 "/usr/include/bits/sigset.h" 1 3 # 23 "/usr/include/bits/sigset.h" 3 typedef int __sig_atomic_t; typedef struct { unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))]; } __sigset_t; # 35 "/usr/include/sys/select.h" 2 3 # 1 "/usr/include/time.h" 1 3 # 106 "/usr/include/time.h" 3 struct timespec { long int tv_sec; long int tv_nsec; }; # 39 "/usr/include/sys/select.h" 2 3 struct timeval; typedef __fd_mask fd_mask; typedef __fd_set fd_set; # 74 "/usr/include/sys/select.h" 3 extern int select (int __nfds, __fd_set *__restrict __readfds, __fd_set *__restrict __writefds, __fd_set *__restrict __exceptfds, struct timeval *__restrict __timeout) ; # 210 "/usr/include/sys/types.h" 2 3 # 1 "/usr/include/sys/sysmacros.h" 1 3 # 213 "/usr/include/sys/types.h" 2 3 # 224 "/usr/include/sys/types.h" 3 typedef __blkcnt_t blkcnt_t; typedef __fsblkcnt_t fsblkcnt_t; typedef __fsfilcnt_t fsfilcnt_t; # 392 "/usr/include/stdlib.h" 2 3 extern int32_t random (void) ; extern void srandom (unsigned int __seed) ; extern char *initstate (unsigned int __seed, char *__statebuf, size_t __statelen) ; extern char *setstate (char *__statebuf) ; struct random_data { int32_t *fptr; int32_t *rptr; int32_t *state; int rand_type; int rand_deg; int rand_sep; int32_t *end_ptr; }; extern int random_r (struct random_data *__restrict __buf, int32_t *__restrict __result) ; extern int srandom_r (unsigned int __seed, struct random_data *__buf) ; extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, size_t __statelen, struct random_data *__restrict __buf) ; extern int setstate_r (char *__restrict __statebuf, struct random_data *__restrict __buf) ; extern int rand (void) ; extern void srand (unsigned int __seed) ; extern int rand_r (unsigned int *__seed) ; extern double drand48 (void) ; extern double erand48 (unsigned short int __xsubi[3]) ; extern long int lrand48 (void) ; extern long int nrand48 (unsigned short int __xsubi[3]) ; extern long int mrand48 (void) ; extern long int jrand48 (unsigned short int __xsubi[3]) ; extern void srand48 (long int __seedval) ; extern unsigned short int *seed48 (unsigned short int __seed16v[3]) ; extern void lcong48 (unsigned short int __param[7]) ; struct drand48_data { unsigned short int x[3]; unsigned short int a[3]; unsigned short int c; unsigned short int old_x[3]; int init; }; extern int drand48_r (struct drand48_data *__restrict __buffer, double *__restrict __result) ; extern int erand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, double *__restrict __result) ; extern int lrand48_r (struct drand48_data *__restrict __buffer, long int *__restrict __result) ; extern int nrand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, long int *__restrict __result) ; extern int mrand48_r (struct drand48_data *__restrict __buffer, long int *__restrict __result) ; extern int jrand48_r (unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, long int *__restrict __result) ; extern int srand48_r (long int __seedval, struct drand48_data *__buffer) ; extern int seed48_r (unsigned short int __seed16v[3], struct drand48_data *__buffer) ; extern int lcong48_r (unsigned short int __param[7], struct drand48_data *__buffer) ; # 526 "/usr/include/stdlib.h" 3 extern void *malloc (size_t __size) __attribute__ ((__malloc__)); extern void *calloc (size_t __nmemb, size_t __size) __attribute__ ((__malloc__)); extern void *realloc (void *__ptr, size_t __size) __attribute__ ((__malloc__)); extern void free (void *__ptr) ; extern void cfree (void *__ptr) ; # 1 "/usr/include/alloca.h" 1 3 # 22 "/usr/include/alloca.h" 3 # 1 "/usr/include/features.h" 1 3 # 23 "/usr/include/alloca.h" 2 3 # 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stddef.h" 1 3 # 26 "/usr/include/alloca.h" 2 3 extern void *alloca (size_t __size) ; # 546 "/usr/include/stdlib.h" 2 3 extern void *valloc (size_t __size) __attribute__ ((__malloc__)); # 560 "/usr/include/stdlib.h" 3 extern void abort (void) __attribute__ ((__noreturn__)); extern int atexit (void (*__func) (void)) ; extern int __on_exit (void (*__func) (int __status, void *__arg), void *__arg) ; extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) ; extern void exit (int __status) __attribute__ ((__noreturn__)); # 588 "/usr/include/stdlib.h" 3 extern char *getenv (__const char *__name) ; extern char *__secure_getenv (__const char *__name) ; extern int putenv (char *__string) ; extern int setenv (__const char *__name, __const char *__value, int __replace) ; extern void unsetenv (__const char *__name) ; extern int clearenv (void) ; # 624 "/usr/include/stdlib.h" 3 extern char *mktemp (char *__template) ; extern int mkstemp (char *__template) ; # 651 "/usr/include/stdlib.h" 3 extern char *mkdtemp (char *__template) ; extern int system (__const char *__command) ; # 673 "/usr/include/stdlib.h" 3 extern char *realpath (__const char *__restrict __name, char *__restrict __resolved) ; typedef int (*__compar_fn_t) (__const void *, __const void *); # 690 "/usr/include/stdlib.h" 3 extern void *bsearch (__const void *__key, __const void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar); extern void qsort (void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar); extern int abs (int __x) __attribute__ ((__const__)); extern long int labs (long int __x) __attribute__ ((__const__)); # 711 "/usr/include/stdlib.h" 3 extern div_t div (int __numer, int __denom) __attribute__ ((__const__)); extern ldiv_t ldiv (long int __numer, long int __denom) __attribute__ ((__const__)); # 729 "/usr/include/stdlib.h" 3 extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) ; extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) ; extern char *gcvt (double __value, int __ndigit, char *__buf) ; extern char *qecvt (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) ; extern char *qfcvt (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) ; extern char *qgcvt (long double __value, int __ndigit, char *__buf) ; extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) ; extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) ; extern int qecvt_r (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) ; extern int qfcvt_r (long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) ; extern int mblen (__const char *__s, size_t __n) ; extern int mbtowc (wchar_t *__restrict __pwc, __const char *__restrict __s, size_t __n) ; extern int wctomb (char *__s, wchar_t __wchar) ; extern size_t mbstowcs (wchar_t *__restrict __pwcs, __const char *__restrict __s, size_t __n) ; extern size_t wcstombs (char *__restrict __s, __const wchar_t *__restrict __pwcs, size_t __n) ; extern int rpmatch (__const char *__response) ; # 851 "/usr/include/stdlib.h" 3 extern int getloadavg (double __loadavg[], int __nelem) ; # 5 "bafio.c" 2 # 1 "/usr/include/assert.h" 1 3 # 35 "/usr/include/assert.h" 3 # 1 "/usr/include/features.h" 1 3 # 36 "/usr/include/assert.h" 2 3 # 6 "bafio.c" 2 # 1 "_aterm.h" 1 # 1 "aterm2.h" 1 # 14 "aterm2.h" # 1 "aterm1.h" 1 # 9 "aterm1.h" # 1 "/usr/include/stdio.h" 1 3 # 10 "aterm1.h" 2 # 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stdarg.h" 1 3 # 110 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stdarg.h" 3 typedef __gnuc_va_list va_list; # 11 "aterm1.h" 2 # 1 "encoding.h" 1 # 97 "encoding.h" typedef unsigned int header_type; # 12 "aterm1.h" 2 # 1 "abool.h" 1 typedef enum { ATfalse=0, ATtrue } ATbool; # 13 "aterm1.h" 2 # 24 "aterm1.h" typedef struct _ATerm { header_type header; struct _ATerm *next; } *ATerm; # 38 "aterm1.h" ATerm ATmake(const char *pattern, ...); ATbool ATmatch(ATerm t, const char *pattern, ...); ATerm ATmakeTerm(ATerm pat, ...); ATbool ATmatchTerm(ATerm t, ATerm pat, ...); ATerm ATvmake(const char *pat); ATerm ATvmakeTerm(ATerm pat); void AT_vmakeSetArgs(va_list *args); ATbool ATvmatch(ATerm t, const char *pat); ATbool ATvmatchTerm(ATerm t, ATerm pat); ATerm ATreadFromTextFile(FILE *file); ATerm ATreadFromSharedTextFile(FILE *f); ATerm ATreadFromBinaryFile(FILE *file); ATerm ATreadFromFile(FILE *file); ATerm ATreadFromNamedFile(const char *name); ATerm ATreadFromString(const char *string); ATerm ATreadFromSharedString(char *s, int size); ATerm ATreadFromBinaryString(char *s, int size); # 75 "aterm1.h" ATbool ATwriteToTextFile(ATerm t, FILE *file); long ATwriteToSharedTextFile(ATerm t, FILE *f); ATbool ATwriteToBinaryFile(ATerm t, FILE *file); ATbool ATwriteToNamedTextFile(ATerm t, const char *name); ATbool ATwriteToNamedBinaryFile(ATerm t, const char *name); char *ATwriteToString(ATerm t); char *ATwriteToSharedString(ATerm t, int *len); char *ATwriteToBinaryString(ATerm t, int *len); ATerm ATsetAnnotation(ATerm t, ATerm label, ATerm anno); ATerm ATgetAnnotation(ATerm t, ATerm label); ATerm ATremoveAnnotation(ATerm t, ATerm label); void ATprotect(ATerm *atp); void ATunprotect(ATerm *atp); void ATprotectArray(ATerm *start, int size); void ATunprotectArray(ATerm *start); void ATinit(int argc, char *argv[], ATerm *bottomOfStack); void ATinitialize(int argc, char *argv[]); void ATsetWarningHandler(void (*handler)(const char *format, va_list args)); void ATsetErrorHandler(void (*handler)(const char *format, va_list args)); void ATsetAbortHandler(void (*handler)(const char *format, va_list args)); void ATwarning(const char *format, ...); void ATerror(const char *format, ...); void ATabort(const char *format, ...); int ATprintf(const char *format, ...); int ATfprintf(FILE *stream, const char *format, ...); int ATvfprintf(FILE *stream, const char *format, va_list args); # 15 "aterm2.h" 2 # 1 "afun.h" 1 # 1 "atypes.h" 1 # 1 "abool.h" 1 # 5 "atypes.h" 2 typedef unsigned int ShortHashNumber; typedef int MachineWord; typedef unsigned int HashNumber; # 5 "afun.h" 2 # 1 "encoding.h" 1 # 6 "afun.h" 2 # 17 "afun.h" typedef MachineWord AFun; typedef struct _SymEntry { header_type header; struct _SymEntry *next; AFun id; char *name; int count; int index; } *SymEntry; # 39 "afun.h" struct _ATerm; extern struct _ATerm **at_lookup_table_alias; extern SymEntry *at_lookup_table; unsigned int AT_symbolTableSize(); void AT_initSymbol(int argc, char *argv[]); int AT_printSymbol(AFun sym, FILE *f); ATbool AT_isValidSymbol(AFun sym); ATbool AT_isMarkedSymbol(AFun sym); void AT_freeSymbol(SymEntry sym); void AT_markProtectedSymbols(); unsigned int AT_hashSymbol(char *name, int arity); ATbool AT_findSymbol(char *name, int arity, ATbool quoted); # 16 "aterm2.h" 2 # 1 "abool.h" 1 # 17 "aterm2.h" 2 typedef struct { header_type header; ATerm next; int value; } *ATermInt; typedef struct { header_type header; ATerm next; double value; } *ATermReal; typedef struct { header_type header; ATerm next; } *ATermAppl; typedef struct _ATermList { header_type header; ATerm next; ATerm head; struct _ATermList *tail; } *ATermList; typedef struct { header_type header; ATerm next; ATerm ph_type; } *ATermPlaceholder; typedef struct { header_type header; ATerm next; void *data; } *ATermBlob; struct _ATermTable; typedef struct _ATermTable *ATermIndexedSet; typedef struct _ATermTable *ATermTable; # 76 "aterm2.h" ATermInt ATmakeInt(int value); ATermReal ATmakeReal(double value); ATermAppl ATmakeAppl(AFun sym, ...); ATermAppl ATmakeAppl0(AFun sym); ATermAppl ATmakeAppl1(AFun sym, ATerm arg0); ATermAppl ATmakeAppl2(AFun sym, ATerm arg0, ATerm arg1); ATermAppl ATmakeAppl3(AFun sym, ATerm arg0, ATerm arg1, ATerm arg2); ATermAppl ATmakeAppl4(AFun sym, ATerm arg0, ATerm arg1, ATerm arg2, ATerm arg3); ATermAppl ATmakeAppl5(AFun sym, ATerm arg0, ATerm arg1, ATerm arg2, ATerm arg4, ATerm arg5); ATermAppl ATmakeAppl6(AFun sym, ATerm arg0, ATerm arg1, ATerm arg2, ATerm arg4, ATerm arg5, ATerm arg6); ATermAppl ATsetArgument(ATermAppl appl, ATerm arg, int n); ATermList ATgetArguments(ATermAppl appl); ATermAppl ATmakeApplList(AFun sym, ATermList args); ATermAppl ATmakeApplArray(AFun sym, ATerm args[]); extern ATermList ATempty; ATermList ATmakeList(int n, ...); ATermList ATmakeList1(ATerm el0); # 142 "aterm2.h" ATermList ATgetTail(ATermList list, int start); ATermList ATreplaceTail(ATermList list, ATermList newtail, int start); ATermList ATgetPrefix(ATermList list); ATerm ATgetLast(ATermList list); ATermList ATgetSlice(ATermList list, int start, int end); ATermList ATinsert(ATermList list, ATerm el); ATermList ATinsertAt(ATermList list, ATerm el, int index); ATermList ATappend(ATermList list, ATerm el); ATermList ATconcat(ATermList list1, ATermList list2); int ATindexOf(ATermList list, ATerm el, int start); int ATlastIndexOf(ATermList list, ATerm el, int start); ATerm ATelementAt(ATermList list, int index); ATermList ATremoveElement(ATermList list, ATerm el); ATermList ATremoveElementAt(ATermList list, int idx); ATermList ATremoveAll(ATermList list, ATerm el); ATermList ATreplace(ATermList list, ATerm el, int idx); ATermList ATreverse(ATermList list); ATerm ATdictCreate(); ATerm ATdictGet(ATerm dict, ATerm key); ATerm ATdictPut(ATerm dict, ATerm key, ATerm value); ATerm ATdictRemove(ATerm dict, ATerm key); ATermTable ATtableCreate(long initial_size, int max_load_pct); void ATtableDestroy(ATermTable table); void ATtableReset(ATermTable table); void ATtablePut(ATermTable table, ATerm key, ATerm value); ATerm ATtableGet(ATermTable table, ATerm key); void ATtableRemove(ATermTable table, ATerm key); ATermList ATtableKeys(ATermTable table); ATermList ATtableValues(ATermTable table); ATermIndexedSet ATindexedSetCreate(long initial_size, int max_load_pct); void ATindexedSetDestroy(ATermIndexedSet set); void ATindexedSetReset(ATermIndexedSet set); long ATindexedSetPut(ATermIndexedSet set, ATerm elem, ATbool *isnew); long ATindexedSetGetIndex(ATermIndexedSet set, ATerm elem); void ATindexedSetRemove(ATermIndexedSet set, ATerm elem); ATermList ATindexedSetElements(ATermIndexedSet set); ATerm ATindexedSetGetElem(ATermIndexedSet set, long index); ATermList ATfilter(ATermList list, ATbool (*predicate)(ATerm)); ATermPlaceholder ATmakePlaceholder(ATerm type); ATermBlob ATmakeBlob(int size, void *data); void ATregisterBlobDestructor(ATbool (*destructor)(ATermBlob)); void ATunregisterBlobDestructor(ATbool (*destructor)(ATermBlob)); AFun ATmakeAFun(char *name, int arity, ATbool quoted); # 211 "aterm2.h" void ATprotectAFun(AFun sym); void ATunprotectAFun(AFun sym); ATerm AT_getAnnotations(ATerm t); ATerm AT_setAnnotations(ATerm t, ATerm annos); ATerm AT_removeAnnotations(ATerm t); ATerm ATremoveAllAnnotations(ATerm t); unsigned char *ATchecksum(ATerm t); ATbool ATdiff(ATerm t1, ATerm t2, ATerm *templ, ATerm *diffs); void ATsetChecking(ATbool on); ATbool ATgetChecking(void); int ATcalcUniqueSubterms(ATerm t); int ATcalcUniqueSymbols(ATerm t); # 5 "_aterm.h" 2 typedef struct ProtEntry { struct ProtEntry *next; ATerm *start; int size; } ProtEntry; extern ATbool silent; extern ProtEntry **at_prot_table; extern int at_prot_table_size; void AT_markTerm(ATerm t); void AT_unmarkTerm(ATerm t); void AT_unmarkIfAllMarked(ATerm t); int AT_calcTextSize(ATerm t); int AT_calcCoreSize(ATerm t); int AT_calcSubterms(ATerm t); int AT_calcUniqueSubterms(ATerm t); int AT_calcUniqueSymbols(ATerm t); int AT_calcTermDepth(ATerm t); void AT_writeToStringBuffer(ATerm t, char *buffer); void AT_assertUnmarked(ATerm t); void AT_assertMarked(ATerm t); int AT_calcAllocatedSize(); # 13 "bafio.c" 2 # 1 "aterm2.h" 1 # 14 "bafio.c" 2 # 1 "memory.h" 1 # 1 "aterm2.h" 1 # 5 "memory.h" 2 # 18 "memory.h" typedef struct Block { int size; struct Block *next_by_size; struct Block *next_before; struct Block *next_after; header_type data[(1<<16)]; } Block; typedef struct BlockBucket { struct Block *first_before; struct Block *first_after; } BlockBucket; extern Block *at_blocks[(256 +3)]; extern int at_nrblocks[(256 +3)]; extern ATerm at_freelist[(256 +3)]; extern BlockBucket block_table[4099]; void AT_initMemory(int argc, char *argv[]); void AT_cleanupMemory(); HashNumber AT_hashnumber(ATerm t); ATerm AT_allocate(int size); void AT_freeTerm(int size, ATerm t); void AT_collect(int size); ATbool AT_isValidTerm(ATerm term); void AT_validateFreeList(int size); int AT_inAnyFreeList(ATerm t); void AT_printAllTerms(FILE *file); void AT_printAllAFunCounts(FILE *file); # 15 "bafio.c" 2 # 1 "afun.h" 1 # 16 "bafio.c" 2 # 1 "util.h" 1 # 1 "/usr/include/string.h" 1 3 # 26 "/usr/include/string.h" 3 # 1 "/usr/include/features.h" 1 3 # 27 "/usr/include/string.h" 2 3 # 1 "/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.0/include/stddef.h" 1 3 # 34 "/usr/include/string.h" 2 3 extern void *memcpy (void *__restrict __dest, __const void *__restrict __src, size_t __n) ; extern void *memmove (void *__dest, __const void *__src, size_t __n) ; extern void *memccpy (void *__restrict __dest, __const void *__restrict __src, int __c, size_t __n) ; extern void *memset (void *__s, int __c, size_t __n) ; extern int memcmp (__const void *__s1, __const void *__s2, size_t __n) __attribute__ ((__pure__)); extern void *memchr (__const void *__s, int __c, size_t __n) __attribute__ ((__pure__)); # 77 "/usr/include/string.h" 3 extern char *strcpy (char *__restrict __dest, __const char *__restrict __src) ; extern char *strncpy (char *__restrict __dest, __const char *__restrict __src, size_t __n) ; extern char *strcat (char *__restrict __dest, __const char *__restrict __src) ; extern char *strncat (char *__restrict __dest, __const char *__restrict __src, size_t __n) ; extern int strcmp (__const char *__s1, __const char *__s2) __attribute__ ((__pure__)); extern int strncmp (__const char *__s1, __const char *__s2, size_t __n) __attribute__ ((__pure__)); extern int strcoll (__const char *__s1, __const char *__s2) __attribute__ ((__pure__)); extern size_t strxfrm (char *__restrict __dest, __const char *__restrict __src, size_t __n) ; # 120 "/usr/include/string.h" 3 extern char *strdup (__const char *__s) __attribute__ ((__malloc__)); # 155 "/usr/include/string.h" 3 extern char *strchr (__const char *__s, int __c) __attribute__ ((__pure__)); extern char *strrchr (__const char *__s, int __c) __attribute__ ((__pure__)); # 167 "/usr/include/string.h" 3 extern size_t strcspn (__const char *__s, __const char *__reject) __attribute__ ((__pure__)); extern size_t strspn (__const char *__s, __const char *__accept) __attribute__ ((__pure__)); extern char *strpbrk (__const char *__s, __const char *__accept) __attribute__ ((__pure__)); extern char *strstr (__const char *__haystack, __const char *__needle) __attribute__ ((__pure__)); # 187 "/usr/include/string.h" 3 extern char *strtok (char *__restrict __s, __const char *__restrict __delim) ; extern char *__strtok_r (char *__restrict __s, __const char *__restrict __delim, char **__restrict __save_ptr) ; extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim, char **__restrict __save_ptr) ; # 218 "/usr/include/string.h" 3 extern size_t strlen (__const char *__s) __attribute__ ((__pure__)); # 229 "/usr/include/string.h" 3 extern char *strerror (int __errnum) ; extern char *__strerror_r (int __errnum, char *__buf, size_t __buflen) ; extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) ; extern void __bzero (void *__s, size_t __n) ; extern void bcopy (__const void *__src, void *__dest, size_t __n) ; extern void bzero (void *__s, size_t __n) ; extern int bcmp (__const void *__s1, __const void *__s2, size_t __n) __attribute__ ((__pure__)); extern char *index (__const char *__s, int __c) __attribute__ ((__pure__)); extern char *rindex (__const char *__s, int __c) __attribute__ ((__pure__)); extern int __ffs (int __i) __attribute__ ((const)); extern int ffs (int __i) __attribute__ ((const)); # 274 "/usr/include/string.h" 3 extern int strcasecmp (__const char *__s1, __const char *__s2) __attribute__ ((__pure__)); extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n) __attribute__ ((__pure__)); # 296 "/usr/include/string.h" 3 extern char *strsep (char **__restrict __stringp, __const char *__restrict __delim) ; # 358 "/usr/include/string.h" 3 # 1 "/usr/include/bits/string.h" 1 3 # 359 "/usr/include/string.h" 2 3 # 1 "/usr/include/bits/string2.h" 1 3 # 52 "/usr/include/bits/string2.h" 3 # 1 "/usr/include/endian.h" 1 3 # 53 "/usr/include/bits/string2.h" 2 3 # 1 "/usr/include/bits/types.h" 1 3 # 54 "/usr/include/bits/string2.h" 2 3 # 371 "/usr/include/bits/string2.h" 3 extern void *__rawmemchr (const void *__s, int __c); # 395 "/usr/include/bits/string2.h" 3 extern __inline char *__strcpy_small (char *, __uint16_t, __uint16_t, __uint32_t, __uint32_t, size_t); extern __inline char * __strcpy_small (char *__dest, __uint16_t __src0_2, __uint16_t __src4_2, __uint32_t __src0_4, __uint32_t __src4_4, size_t __srclen) { union { __uint32_t __ui; __uint16_t __usi; unsigned char __uc; } *__u = (void *) __dest; switch ((unsigned int) __srclen) { case 1: __u->__uc = '\0'; break; case 2: __u->__usi = __src0_2; break; case 3: __u->__usi = __src0_2; __u = __extension__ ((void *) __u + 2); __u->__uc = '\0'; break; case 4: __u->__ui = __src0_4; break; case 5: __u->__ui = __src0_4; __u = __extension__ ((void *) __u + 4); __u->__uc = '\0'; break; case 6: __u->__ui = __src0_4; __u = __extension__ ((void *) __u + 4); __u->__usi = __src4_2; break; case 7: __u->__ui = __src0_4; __u = __extension__ ((void *) __u + 4); __u->__usi = __src4_2; __u = __extension__ ((void *) __u + 2); __u->__uc = '\0'; break; case 8: __u->__ui = __src0_4; __u = __extension__ ((void *) __u + 4); __u->__ui = __src4_4; break; } return __dest; } # 873 "/usr/include/bits/string2.h" 3 extern __inline size_t __strcspn_c1 (__const char *__s, char __reject); extern __inline size_t __strcspn_c1 (__const char *__s, char __reject) { register size_t __result = 0; while (__s[__result] != '\0' && __s[__result] != __reject) ++__result; return __result; } extern __inline size_t __strcspn_c2 (__const char *__s, char __reject1, char __reject2); extern __inline size_t __strcspn_c2 (__const char *__s, char __reject1, char __reject2) { register size_t __result = 0; while (__s[__result] != '\0' && __s[__result] != __reject1 && __s[__result] != __reject2) ++__result; return __result; } extern __inline size_t __strcspn_c3 (__const char *__s, char __reject1, char __reject2, char __reject3); extern __inline size_t __strcspn_c3 (__const char *__s, char __reject1, char __reject2, char __reject3) { register size_t __result = 0; while (__s[__result] != '\0' && __s[__result] != __reject1 && __s[__result] != __reject2 && __s[__result] != __reject3) ++__result; return __result; } # 928 "/usr/include/bits/string2.h" 3 extern __inline size_t __strspn_c1 (__const char *__s, char __accept); extern __inline size_t __strspn_c1 (__const char *__s, char __accept) { register size_t __result = 0; while (__s[__result] == __accept) ++__result; return __result; } extern __inline size_t __strspn_c2 (__const char *__s, char __accept1, char __accept2); extern __inline size_t __strspn_c2 (__const char *__s, char __accept1, char __accept2) { register size_t __result = 0; while (__s[__result] == __accept1 || __s[__result] == __accept2) ++__result; return __result; } extern __inline size_t __strspn_c3 (__const char *__s, char __accept1, char __accept2, char __accept3); extern __inline size_t __strspn_c3 (__const char *__s, char __accept1, char __accept2, char __accept3) { register size_t __result = 0; while (__s[__result] == __accept1 || __s[__result] == __accept2 || __s[__result] == __accept3) ++__result; return __result; } # 983 "/usr/include/bits/string2.h" 3 extern __inline char *__strpbrk_c2 (__const char *__s, char __accept1, char __accept2); extern __inline char * __strpbrk_c2 (__const char *__s, char __accept1, char __accept2) { while (*__s != '\0' && *__s != __accept1 && *__s != __accept2) ++__s; return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s; } extern __inline char *__strpbrk_c3 (__const char *__s, char __accept1, char __accept2, char __accept3); extern __inline char * __strpbrk_c3 (__const char *__s, char __accept1, char __accept2, char __accept3) { while (*__s != '\0' && *__s != __accept1 && *__s != __accept2 && *__s != __accept3) ++__s; return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s; } # 1045 "/usr/include/bits/string2.h" 3 extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp); extern __inline char * __strtok_r_1c (char *__s, char __sep, char **__nextp) { char *__result; if (__s == ((void *)0)) __s = *__nextp; while (*__s == __sep) ++__s; if (*__s == '\0') __result = ((void *)0); else { __result = __s; while (*__s != '\0' && *__s != __sep) ++__s; if (*__s == '\0') *__nextp = __s; else { *__s = '\0'; *__nextp = __s + 1; } } return __result; } # 1095 "/usr/include/bits/string2.h" 3 extern __inline char *__strsep_1c (char **__s, char __reject); extern __inline char * __strsep_1c (char **__s, char __reject) { register char *__retval = *__s; if (__retval == ((void *)0)) return *__s = ((void *)0); if (*__retval == __reject) *(*__s)++ = '\0'; else if ((*__s = (__extension__ (__builtin_constant_p (__reject) && (__reject) == '\0' ? (char *) __rawmemchr (__retval, __reject) : strchr (__retval, __reject)))) != ((void *)0)) *(*__s)++ = '\0'; else *__s = ((void *)0); return __retval; } extern __inline char *__strsep_2c (char **__s, char __reject1, char __reject2); extern __inline char * __strsep_2c (char **__s, char __reject1, char __reject2) { register char *__retval = *__s; if (__retval == ((void *)0)) return *__s = ((void *)0); if (*__retval == __reject1 || *__retval == __reject2) *(*__s)++ = '\0'; else { register char *__cp = __retval; while (*__cp != '\0' && *__cp != __reject1 && *__cp != __reject2) ++__cp; if (*__cp != '\0') { *__s = __cp; *(*__s)++ = '\0'; } else *__s = ((void *)0); } return __retval; } extern __inline char *__strsep_3c (char **__s, char __reject1, char __reject2, char __reject3); extern __inline char * __strsep_3c (char **__s, char __reject1, char __reject2, char __reject3) { register char *__retval = *__s; if (__retval == ((void *)0)) return *__s = ((void *)0); if (*__retval == __reject1 || *__retval == __reject2 || *__retval == __reject3) *(*__s)++ = '\0'; else { register char *__cp = __retval; while (*__cp != '\0' && *__cp != __reject1 && *__cp != __reject2 && *__cp != __reject3) ++__cp; if (*__cp != '\0') { *__s = __cp; *(*__s)++ = '\0'; } else *__s = ((void *)0); } return __retval; } extern __inline char *__strsep_g (char **__s, __const char *__reject); extern __inline char * __strsep_g (char **__s, __const char *__reject) { register char *__retval = *__s; if (__retval == ((void *)0)) return ((void *)0); if ((*__s = __extension__ ({ char __a0, __a1, __a2; (__builtin_constant_p (__reject) && ((size_t)(const void *)((__reject) + 1) - (size_t)(const void *)(__reject) == 1) ? ((__a0 = ((__const char *) (__reject))[0], __a0 == '\0') ? ((void) (__retval), ((void *)0)) : ((__a1 = ((__const char *) (__reject))[1], __a1 == '\0') ? (__extension__ (__builtin_constant_p (__a0) && (__a0) == '\0' ? (char *) __rawmemchr (__retval, __a0) : strchr (__retval, __a0))) : ((__a2 = ((__const char *) (__reject))[2], __a2 == '\0') ? __strpbrk_c2 (__retval, __a0, __a1) : (((__const char *) (__reject))[3] == '\0' ? __strpbrk_c3 (__retval, __a0, __a1, __a2) : strpbrk (__retval, __reject))))) : strpbrk (__retval, __reject)); })) != ((void *)0)) *(*__s)++ = '\0'; return __retval; } # 1188 "/usr/include/bits/string2.h" 3 # 1 "/usr/include/stdlib.h" 1 3 # 1189 "/usr/include/bits/string2.h" 2 3 extern char *__strdup (__const char *__string) __attribute__ ((__malloc__)); # 1212 "/usr/include/bits/string2.h" 3 extern char *__strndup (__const char *__string, size_t __n) __attribute__ ((__malloc__)); # 362 "/usr/include/string.h" 2 3 # 5 "util.h" 2 # 17 "bafio.c" 2 # 1 "byteio.h" 1 # 1 "/usr/include/stdio.h" 1 3 # 5 "byteio.h" 2 typedef struct { int type; union { FILE *file_data; struct { char *buf; int max_size; int cur_size; } string_data; } u; } byte_writer; typedef struct { int type; long bytes_read; union { FILE *file_data; struct { char *buf; int index; int size; } string_data; } u; } byte_reader; int write_byte(int byte, byte_writer *writer); int write_bytes(const char *buf, int count, byte_writer *writer); int read_byte(byte_reader *reader); int read_bytes(char *buf, int count, byte_reader *reader); void init_file_reader(byte_reader *reader, FILE *file); void init_string_reader(byte_reader *reader, char *buf, int max_size); # 18 "bafio.c" 2 # 54 "bafio.c" typedef struct _trm_bucket { struct _trm_bucket *next; ATerm t; } trm_bucket; typedef struct _top_symbol { struct _top_symbol *next; AFun s; int index; int count; int code_width; int code; } top_symbol; typedef struct { int nr_symbols; top_symbol *symbols; int toptable_size; top_symbol **toptable; } top_symbols; typedef struct _sym_entry { AFun id; int arity; int nr_terms; trm_bucket *terms; top_symbols *top_symbols; int termtable_size; trm_bucket **termtable; int term_width; int cur_index; int nr_times_top; struct _sym_entry *next_topsym; } sym_entry; typedef struct { AFun sym; int arity; int nr_terms; int term_width; ATerm *terms; int *nr_topsyms; int *sym_width; int **topsyms; } sym_read_entry; char bafio_id[] = "$Id: bafio.c,v 1.38 2001/03/05 12:10:03 jong Exp $"; static int nr_unique_symbols = -1; static sym_read_entry *read_symbols; static sym_entry *sym_entries = ((void *)0); static sym_entry *first_topsym = ((void *)0); static char *text_buffer = ((void *)0); static int text_buffer_size = 0; static unsigned char bit_buffer = '\0'; static int bits_in_buffer = 0; # 138 "bafio.c" void AT_initBafIO(int argc, char *argv[]) { } void AT_getBafVersion(int *major, int *minor) { *major = 0x0300 >> 8; *minor = 0x0300 & 0xff; } static int writeIntToBuf(unsigned int val, unsigned char *buf) { if (val < (1 << 7)) { buf[0] = (unsigned char) val; return 1; } if (val < (1 << 14)) { buf[0] = (val >> 8) | 0x80; buf[1] = (val >> 0) & 0xff; return 2; } if (val < (1 << 21)) { buf[0] = (val >> 16) | 0xc0; buf[1] = (val >> 8) & 0xff; buf[2] = (val >> 0) & 0xff; return 3; } if (val < (1 << 28)) { buf[0] = (val >> 24) | 0xe0; buf[1] = (val >> 16) & 0xff; buf[2] = (val >> 8) & 0xff; buf[3] = (val >> 0) & 0xff; return 4; } buf[0] = 0xf0; buf[1] = (val >> 24) & 0xff; buf[2] = (val >> 16) & 0xff; buf[3] = (val >> 8) & 0xff; buf[4] = (val >> 0) & 0xff; return 5; } static int writeBits(unsigned int val, int nr_bits, byte_writer *writer) { int cur_bit; for (cur_bit=0; cur_bit>= 1; if (++bits_in_buffer == 8) { if (write_byte((int)bit_buffer, writer) == -1) return -1; bits_in_buffer = 0; bit_buffer = '\0'; } } return 0; } static int flushBitsToWriter(byte_writer *writer) { int result = 0; if(bits_in_buffer > 0) { int left = 8-bits_in_buffer; bit_buffer <<= left; result = (write_byte((int)bit_buffer, writer) == (-1)) ? -1 : 0; bits_in_buffer = 0; bit_buffer = '\0'; } return result; } static int readBits(unsigned int *val, int nr_bits, byte_reader *reader) { int cur_bit, mask = 1; *val = 0; for (cur_bit=0; cur_bitname); if(writeString(name, strlen(name), writer) < 0) return ATfalse; if(writeInt(((at_lookup_table_alias[(sym)]->header) >> 8), writer) < 0) return ATfalse; if(writeInt((((at_lookup_table_alias[(sym)]->header) & (1<<0)) ? ATtrue : ATfalse), writer) < 0) return ATfalse; return ATtrue; } void AT_print_sym_entries() { int cur_sym, cur_arg; for(cur_sym=0; cur_symid, cur_entry->nr_terms, cur_entry->term_width); # 457 "bafio.c" ATfprintf(stderr, " arity: %d\n", cur_entry->arity); for (cur_arg=0; cur_argarity; cur_arg++) { int sym; top_symbols *tss = &cur_entry->top_symbols[cur_arg]; ATfprintf(stderr, " %d symbols: ", tss->nr_symbols); for (sym=0; symnr_symbols; sym++) { top_symbol *ts = &tss->symbols[sym]; ATfprintf(stderr, "%y: #=%d, width: %d, ", sym_entries[ts->index].id, ts->count, ts->code_width); } ATfprintf(stderr, "\n"); } } } # 480 "bafio.c" static sym_entry *get_top_symbol(ATerm t, ATbool anno_done) { AFun sym; if (((t->header) & (1<<0)) && !anno_done) sym = 6; else { switch (((((t)->header) & ((1<<5) | (1<<6) | (1<<7))) >> 5)) { case 2: sym = 0; break; case 3: sym = 1; break; case 6: sym = 2; break; case 5: sym = 3; break; case 4: sym = (((ATbool)(((ATermList)t) == ATempty)) ? 5 : 4); break; case 1: sym = ((((ATermAppl)t)->header) >> 8); break; default: ATabort("get_top_symbol: illegal term (%n)\n", t); sym = -1; break; } } return &sym_entries[at_lookup_table[sym]->index]; } static int bit_width(int val) { int nr_bits = 0; if (val <= 1) return 0; while (val) { val>>=1; nr_bits++; } return nr_bits; } # 543 "bafio.c" void gather_top_symbols(sym_entry *cur_entry, int cur_arg, int total_top_symbols) { int index; unsigned int hnr; top_symbols *tss; sym_entry *top_entry; tss = &cur_entry->top_symbols[cur_arg]; tss->nr_symbols = total_top_symbols; tss->symbols = (top_symbol *) calloc(total_top_symbols, sizeof(top_symbol)); if (!tss->symbols) ATerror("build_arg_tables: out of memory (top_symbols: %d)\n", total_top_symbols); tss->toptable_size = (total_top_symbols*5)/4; tss->toptable = (top_symbol **) calloc(tss->toptable_size, sizeof(top_symbol *)); if (!tss->toptable) ATerror("build_arg_tables: out of memory (table_size: %d)\n", tss->toptable_size); index = 0; for(top_entry=first_topsym; top_entry; top_entry=top_entry->next_topsym) { top_symbol *ts; ts = &cur_entry->top_symbols[cur_arg].symbols[index]; ts->index = top_entry-sym_entries; ts->count = top_entry->nr_times_top; ts->code_width = bit_width(total_top_symbols); ts->code = index; ts->s = top_entry->id; hnr = ts->s % tss->toptable_size; ts->next = tss->toptable[hnr]; tss->toptable[hnr] = ts; top_entry->nr_times_top = 0; index++; } } static void build_arg_tables() { int cur_sym, cur_arg, cur_trm; sym_entry *topsym; for(cur_sym=0; cur_symarity; ((void) 0); if(arity == 0) cur_entry->top_symbols = ((void *)0); else { cur_entry->top_symbols = (top_symbols *)calloc(arity, sizeof(top_symbols)); if(!cur_entry->top_symbols) ATerror("build_arg_tables: out of memory (arity: %d)\n", arity); } for(cur_arg=0; cur_argnr_terms; cur_trm++) { ATerm term = cur_entry->terms[cur_trm].t; ATerm arg = ((void *)0); if (sym_entries[cur_sym].id == 6) { ((void) 0); if (cur_arg == 0) arg = term; else arg = AT_getAnnotations(term); } else { switch(((((term)->header) & ((1<<5) | (1<<6) | (1<<7))) >> 5)) { case 4: { ATermList list = (ATermList)term; ((void) 0); ((void) 0); if (cur_arg == 0) arg = ((list)->head); else arg = (ATerm)((list)->tail); } break; case 5: ((void) 0); arg = (((ATermPlaceholder)term)->ph_type); break; case 1: arg = (*((ATerm *)((ATermAppl)term) + 2 + (cur_arg))); break; default: ATerror("build_arg_tables: illegal term\n"); break; } } topsym = get_top_symbol(arg, sym_entries[cur_sym].id == 6 ? ATtrue : ATfalse); if (!topsym->nr_times_top++) { total_top_symbols++; topsym->next_topsym = first_topsym; first_topsym = topsym; } } gather_top_symbols(cur_entry, cur_arg, total_top_symbols); } } } static void add_term(sym_entry *entry, ATerm t) { unsigned int hnr = AT_hashnumber(t) % entry->termtable_size; entry->terms[entry->cur_index].t = t; entry->terms[entry->cur_index].next = entry->termtable[hnr]; entry->termtable[hnr] = &entry->terms[entry->cur_index]; entry->cur_index++; } # 679 "bafio.c" static void collect_terms(ATerm t) { AFun sym = -1; ATerm annos; sym_entry *entry; if (!(((t->header) & (1<<1)) ? ATtrue : ATfalse)) { switch(((((t)->header) & ((1<<5) | (1<<6) | (1<<7))) >> 5)) { case 2: sym = 0; break; case 3: sym = 1; break; case 6: sym = 2; break; case 5: sym = 3; collect_terms((((ATermPlaceholder)t)->ph_type)); break; case 4: { ATermList list = (ATermList)t; if(((ATbool)((list) == ATempty))) { sym = 5; } else { sym = 4; collect_terms(((list)->head)); collect_terms((ATerm)((list)->tail)); } } break; case 1: { ATermAppl appl = (ATermAppl)t; int cur_arity, cur_arg; sym = (((appl)->header) >> 8); cur_arity = ((at_lookup_table_alias[(sym)]->header) >> 8); for(cur_arg=0; cur_argindex]; ((void) 0); add_term(entry, t); annos = AT_getAnnotations(t); if (annos) { entry = &sym_entries[at_lookup_table[6]->index]; ((void) 0); collect_terms((ATerm)annos); add_term(entry, t); } ((t->header) |= (1<<1)); } } # 754 "bafio.c" static ATbool write_symbols(byte_writer *writer) { int sym_idx, arg_idx, top_idx; for(sym_idx=0; sym_idxid, writer)) return ATfalse; if (writeInt(cur_sym->nr_terms, writer) < 0) return ATfalse; for(arg_idx=0; arg_idxarity; arg_idx++) { int nr_symbols = cur_sym->top_symbols[arg_idx].nr_symbols; if(writeInt(nr_symbols, writer)<0) return ATfalse; for(top_idx=0; top_idxtop_symbols[arg_idx].symbols[top_idx]; if (writeInt(ts->index, writer)<0) return ATfalse; } } } return ATtrue; } # 791 "bafio.c" static int find_term(sym_entry *entry, ATerm t) { unsigned int hnr = AT_hashnumber(t) % entry->termtable_size; trm_bucket *cur = entry->termtable[hnr]; ((void) 0); while (cur->t != t) { cur = cur->next; ((void) 0); } return cur - entry->terms; } # 812 "bafio.c" static top_symbol *find_top_symbol(top_symbols *syms, AFun sym) { unsigned int hnr = sym % syms->toptable_size; top_symbol *cur = syms->toptable[hnr]; ((void) 0); while (cur->s != sym) { cur = cur->next; ((void) 0); } return cur; } # 834 "bafio.c" static ATbool write_term(ATerm, byte_writer *, ATbool); static ATbool write_arg(sym_entry *trm_sym, ATerm arg, int arg_idx, byte_writer *writer, ATbool anno_done) { top_symbol *ts; sym_entry *arg_sym; int arg_trm_idx; AFun sym; sym = get_top_symbol(arg, anno_done)->id; ts = find_top_symbol(&trm_sym->top_symbols[arg_idx], sym); if(writeBits(ts->code, ts->code_width, writer)<0) return ATfalse; arg_sym = &sym_entries[ts->index]; arg_trm_idx = find_term(arg_sym, arg); if (writeBits(arg_trm_idx, arg_sym->term_width, writer)<0) { ATfprintf(stderr, "writeBits in write_arg failed for %t\n", arg); return ATfalse; } if (arg_trm_idx >= arg_sym->cur_index && !write_term(arg, writer, anno_done)) { fprintf(stderr, "write_term in write_arg failed\n"); return ATfalse; } return ATtrue; } # 879 "bafio.c" static ATbool write_term(ATerm t, byte_writer *writer, ATbool anno_done) { int arg_idx; sym_entry *trm_sym = ((void *)0); ATerm annos; annos = AT_getAnnotations(t); if(!anno_done && annos) { trm_sym = &sym_entries[at_lookup_table[6]->index]; if(!write_arg(trm_sym, t, 0, writer, ATtrue)) { return ATfalse; } if(!write_arg(trm_sym, annos, 1, writer, ATfalse)) { return ATfalse; } } else { switch(((((t)->header) & ((1<<5) | (1<<6) | (1<<7))) >> 5)) { case 2: if(writeBits((((ATermInt)t)->value), 32, writer) < 0) { return ATfalse; } trm_sym = &sym_entries[at_lookup_table[0]->index]; break; case 3: { static char buf[64]; sprintf(buf, "%.15e", (((ATermReal)t)->value)); if (flushBitsToWriter(writer)<0) return ATfalse; if (writeString(buf, strlen(buf), writer) < 0) return ATfalse; trm_sym = &sym_entries[at_lookup_table[1]->index]; } break; case 6: { ATermBlob blob = (ATermBlob)t; if (flushBitsToWriter(writer)<0) return ATfalse; if (writeString(((blob)->data), ((int)(((blob)->header) >> 8)), writer)<0) return ATfalse; trm_sym = &sym_entries[at_lookup_table[2]->index]; } break; case 5: { ATerm type = (((ATermPlaceholder)t)->ph_type); trm_sym = &sym_entries[at_lookup_table[3]->index]; if(!write_arg(trm_sym, type, 0, writer, ATfalse)) return ATfalse; } break; case 4: { ATermList list = (ATermList)t; if (((ATbool)((list) == ATempty))) trm_sym = &sym_entries[at_lookup_table[5]->index]; else { trm_sym = &sym_entries[at_lookup_table[4]->index]; if(!write_arg(trm_sym, ((list)->head), 0, writer, ATfalse)) { return ATfalse; } if(!write_arg(trm_sym, (ATerm)((list)->tail), 1, writer, ATfalse)) { return ATfalse; } } } break; case 1: { int arity; AFun sym = (((t)->header) >> 8); trm_sym = &sym_entries[at_lookup_table[sym]->index]; ((void) 0); arity = ((at_lookup_table_alias[(sym)]->header) >> 8); for (arg_idx=0; arg_idxterms[trm_sym->cur_index].t != t) { ATerror("terms out of sync at pos %d of sym %y, " "term in table was %d, expected %t\n", trm_sym->cur_index, trm_sym->id, trm_sym->terms[trm_sym->cur_index].t, t); } trm_sym->cur_index++; return ATtrue; } # 997 "bafio.c" static void free_write_space() { int i, j; for(i=0; iterms); entry->terms = ((void *)0); free(entry->termtable); entry->termtable = ((void *)0); for(j=0; jarity; j++) { top_symbols *topsyms = &entry->top_symbols[j]; if(topsyms->symbols) { free(topsyms->symbols); topsyms->symbols = ((void *)0); } if(topsyms->toptable) { free(topsyms->toptable); topsyms->toptable = ((void *)0); } } if(entry->top_symbols) { free(entry->top_symbols); entry->top_symbols = ((void *)0); } } free(sym_entries); sym_entries = ((void *)0); } ATbool write_baf(ATerm t, byte_writer *writer) { int nr_unique_terms = 0; int nr_symbols = AT_symbolTableSize(); int lcv, cur; int nr_bits; AFun sym; bit_buffer = '\0'; bits_in_buffer = 0; for(lcv=0; lcvcount = 0; } nr_unique_symbols = AT_calcUniqueSymbols(t); sym_entries = (sym_entry *) calloc(nr_unique_symbols, sizeof(sym_entry)); if(!sym_entries) ATerror("write_baf: out of memory (%d unique symbols!\n", nr_unique_symbols); nr_bits = bit_width(nr_unique_symbols); for(lcv=cur=0; lcvcount>0) { ((void) 0); nr_unique_terms += entry->count; sym_entries[cur].term_width = bit_width(entry->count); sym_entries[cur].id = lcv; sym_entries[cur].arity = ((at_lookup_table_alias[(lcv)]->header) >> 8); sym_entries[cur].nr_terms = entry->count; sym_entries[cur].terms = (trm_bucket *) calloc(entry->count, sizeof(trm_bucket)); if (!sym_entries[cur].terms) ATerror("write_baf: out of memory (sym: %d, terms: %d)\n", lcv, entry->count); sym_entries[cur].termtable_size = (entry->count*5)/4; sym_entries[cur].termtable = (trm_bucket **) calloc(sym_entries[cur].termtable_size, sizeof(trm_bucket *)); if (!sym_entries[cur].termtable) ATerror("write_baf: out of memory (termtable_size: %d\n", sym_entries[cur].termtable_size); entry->index = cur; entry->count = 0; cur++; } } ((void) 0); collect_terms(t); AT_unmarkIfAllMarked(t); for(lcv=0; lcv < nr_unique_symbols; lcv++) sym_entries[lcv].cur_index = 0; build_arg_tables(); if(writeInt(0, writer) < 0) return ATfalse; if(writeInt(0xbaf, writer) < 0) return ATfalse; if(writeInt(0x0300, writer) < 0) return ATfalse; if(writeInt(nr_unique_symbols, writer) < 0) return ATfalse; if(writeInt(nr_unique_terms, writer) < 0) return ATfalse; if(!write_symbols(writer)) { return ATfalse; } sym = get_top_symbol(t, ATfalse)->id; if(writeInt(get_top_symbol(t, ATfalse)-sym_entries, writer) < 0) return ATfalse; if (!write_term(t, writer, ATfalse)) { return ATfalse; } if (flushBitsToWriter(writer)<0) return ATfalse; free_write_space(); return ATtrue; } char *ATwriteToBinaryString(ATerm t, int *len) { static byte_writer writer; static ATbool initialized = ATfalse; if (!initialized) { writer.type = 1; writer.u.string_data.buf = (char *)calloc(8192, 1); writer.u.string_data.max_size = 8192; initialized = ATtrue; } writer.u.string_data.cur_size = 0; if (!write_baf(t, &writer)) { return ((void *)0); } if (len != ((void *)0)) { *len = writer.u.string_data.cur_size; } return writer.u.string_data.buf; } ATbool ATwriteToBinaryFile(ATerm t, FILE *file) { static byte_writer writer; static ATbool initialized = ATfalse; if (!initialized) { writer.type = 0; initialized = ATtrue; } writer.u.file_data = file; return write_baf(t, &writer); } # 1210 "bafio.c" ATbool ATwriteToNamedBinaryFile(ATerm t, const char *name) { FILE *f; ATbool result; if(!__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (name) && __builtin_constant_p ("-") && (__s1_len = strlen (name), __s2_len = strlen ("-"), (!((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("-") + 1) - (size_t)(const void *)("-") == 1) || __s2_len >= 4)) ? memcmp ((__const char *) (name), (__const char *) ("-"), (__s1_len < __s2_len ? __s1_len : __s2_len) + 1) : (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) && (__s1_len = strlen (name), __s1_len < 4) ? (__builtin_constant_p ("-") && ((size_t)(const void *)(("-") + 1) - (size_t)(const void *)("-") == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (name))[0] - ((__const unsigned char *) (__const char *)("-"))[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[1] - ((__const u! nsigned char *) (__const char *) ("-"))[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[2] - ((__const unsigned char *) (__const char *) ("-"))[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (name))[3] - ((__const unsigned char *) (__const char *) ("-"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("-"); register int __result = (((__const unsigned char *) (__const char *) (name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("-") && ((size_t)(cons! t void *)(("-") + 1) - (size_t)(const void *)("-") == 1) && (__s2_len = strlen ("-"), __s2_len < 4) ? (__builtin_constant_p (name) && ((size_t)(const void *)((name) + 1) - (size_t)(const void *)(name) == 1) ? (__extension__ ({ register int __result = (((__const unsigned char *) (__const char *) (name))[0] - ((__const unsigned char *) (__const char *)("-"))[0]); if (__s2_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[1] - ((__const unsigned char *) (__const char *) ("-"))[1]); if (__s2_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (name))[2] - ((__const unsigned char *) (__const char *) ("-"))[2]); if (__s2_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (name))[3] - ((__const unsigned char *) (__const char *) ("-"))[3]); } } __result; })) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (name); register int __result ! = __s1[0] - ((__const unsigned char *) (__const char *) ("-"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("-"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("-"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("-"))[3]); } } __result; }))) : strcmp (name, "-")))); })) return ATwriteToBinaryFile(t, stdout); if(!(f = fopen(name, "w"))) { return ATfalse; } result = ATwriteToBinaryFile(t, f); fclose(f); return result; } # 1236 "bafio.c" AFun read_symbol(byte_reader *reader) { unsigned int arity, quoted; int len; if((len = readString(reader)) < 0) return -1; text_buffer[len] = '\0'; if(readInt(&arity, reader) < 0) return -1; if(readInt("ed, reader) < 0) return -1; return ATmakeAFun(text_buffer, arity, quoted ? ATtrue : ATfalse); } # 1263 "bafio.c" ATbool read_all_symbols(byte_reader *reader) { unsigned int val; int i, j, k, arity; for(i=0; iheader) >> 8); read_symbols[i].arity = arity; if(readInt(&val, reader) < 0) return ATfalse; read_symbols[i].nr_terms = val; read_symbols[i].term_width = bit_width(val); if(val == 0) read_symbols[i].terms = ((void *)0); else read_symbols[i].terms = (ATerm *)calloc(val, sizeof(ATerm)); if(!read_symbols[i].terms) ATerror("read_symbols: could not allocate space for %d terms.\n", val); ATprotectArray(read_symbols[i].terms, val); if(arity == 0) { read_symbols[i].nr_topsyms = ((void *)0); read_symbols[i].sym_width = ((void *)0); read_symbols[i].topsyms = ((void *)0); } else { read_symbols[i].nr_topsyms = (int *)calloc(arity, sizeof(int)); if(!read_symbols[i].nr_topsyms) ATerror("read_all_symbols: out of memory trying to allocate " "space for %d arguments.\n", arity); read_symbols[i].sym_width = (int *)calloc(arity, sizeof(int)); if(!read_symbols[i].sym_width) ATerror("read_all_symbols: out of memory trying to allocate " "space for %d arguments .\n", arity); read_symbols[i].topsyms = (int **)calloc(arity, sizeof(int *)); if(!read_symbols[i].topsyms) ATerror("read_all_symbols: out of memory trying to allocate " "space for %d arguments.\n", arity); } for(j=0; jarity; sym_read_entry *arg_sym; ATerm inline_args[6]; ATerm *args = inline_args; ATerm result; if(arity > 6) { args = calloc(arity, sizeof(ATerm)); ATprotectArray(args, arity); if(!args) ATerror("could not allocate space for %d arguments.\n", arity); } for(i=0; isym_width[i], reader) < 0) return ((void *)0); arg_sym = &read_symbols[sym->topsyms[i][val]]; if(readBits(&val, arg_sym->term_width, reader) < 0) return ((void *)0); if(!arg_sym->terms[val]) { arg_sym->terms[val] = read_term(arg_sym, reader); if(!arg_sym->terms[val]) return ((void *)0); } args[i] = arg_sym->terms[val]; } switch(sym->sym) { case 0: if(readBits(&val, 32, reader) < 0) return ((void *)0); result = (ATerm)ATmakeInt((int)val); break; case 1: { double real; int len; if(flushBitsFromReader(reader) < 0) return ((void *)0); if((len = readString(reader)) < 0) return ((void *)0); text_buffer[len] = '\0'; sscanf(text_buffer, "%lf", &real); result = (ATerm)ATmakeReal(real); } break; case 2: { int len; char *data; if(flushBitsFromReader(reader) < 0) return ((void *)0); if((len = readString(reader)) < 0) return ((void *)0); data = malloc(len); if(!data) ATerror("could not allocate space for blob of size %d\n", len); result = (ATerm)ATmakeBlob(len, data); } break; case 3: result = (ATerm)ATmakePlaceholder(args[0]); break; case 4: result = (ATerm)ATinsert((ATermList)args[1], args[0]); break; case 5: result = (ATerm)ATempty; break; case 6: result = AT_setAnnotations(args[0], args[1]); break; default: result = (ATerm)ATmakeApplArray(sym->sym, args); # 1470 "bafio.c" } if(arity > 6) { ATunprotectArray(args); free(args); } return result; } # 1488 "bafio.c" static void free_read_space() { int i, j; for(i=0; iterms); if(entry->terms) free(entry->terms); if(entry->nr_topsyms) free(entry->nr_topsyms); if(entry->sym_width) free(entry->sym_width); for(j=0; jarity; j++) free(entry->topsyms[j]); if(entry->topsyms) free(entry->topsyms); } free(read_symbols); } # 1519 "bafio.c" ATerm read_baf(byte_reader *reader) { unsigned int val, nr_unique_terms; ATerm result = ((void *)0); bit_buffer = '\0'; bits_in_buffer = 0; if(readInt(&val, reader) < 0) return ((void *)0); if(val == 0) { if(readInt(&val, reader) < 0) return ((void *)0); } if(val != 0xbaf) { fprintf(stderr, "read_baf: input is not in BAF!\n"); return ((void *)0); } if(readInt(&val, reader) < 0) return ((void *)0); if(val != 0x0300) { fprintf(stderr, "read_baf: wrong BAF version, giving up!\n"); return ((void *)0); } if(readInt(&val, reader) < 0) return ((void *)0); nr_unique_symbols = val; if(readInt(&nr_unique_terms, reader) < 0) return ((void *)0); if(!silent) fprintf(stderr, "reading %d unique symbols and %d unique terms.\n", nr_unique_symbols, nr_unique_terms); read_symbols = (sym_read_entry *)calloc(nr_unique_symbols, sizeof(sym_read_entry)); if(!read_symbols) ATerror("read_baf: out of memory when allocating %d syms.\n", nr_unique_symbols); if(!read_all_symbols(reader)) return ((void *)0); if(readInt(&val, reader) < 0) return ((void *)0); result = read_term(&read_symbols[val], reader); free_read_space(); return result; } ATerm ATreadFromBinaryString(char *s, int size) { byte_reader reader; init_string_reader(&reader, s, size); return read_baf(&reader); } ATerm ATreadFromBinaryFile(FILE *file) { byte_reader reader; init_file_reader(&reader, file); # 1615 "bafio.c" return read_baf(&reader); } >Fix: >Release-Note: >Audit-Trail: >Unformatted: