[Bug c/45407] New: internal compiler error gcc 4.5.1

bbiswas at email dot unc dot edu gcc-bugzilla@gcc.gnu.org
Wed Aug 25 17:55:00 GMT 2010


1.  version: gcc 4.5.1
2.  system type: Solaris 5.10 sparc:
3.  % uname -a
     SunOS casey 5.10 Generic_141444-09 sun4v sparc SUNW,Sun-Fire-T200
4. configured as follows:
     % cd objdir
     % ../configure  --prefix=/afs/isis/pkg/gcc-4.5.1  \
             --with-mpfr=/afs/isis/pkg/mpfr-3.0.0 \
             --with-mpfr-include=/afs/isis/pkg/mpfr-3.0.0/include  \
             --with-mpfr-lib=/afs/isis/pkg/mpfr-3.0.0/lib  \
             --with-gmp=/afs/isis/pkg/gmp-5.0.1   \
             --with-gmp-include=/afs/isis/pkg/gmp-5.0.1/include  \
             --with-gmp-lib=/afs/isis/pkg/gmp-5.0.1/lib   \
             --with-mpc=/afs/isis/pkg/mpc-0.8.2  \
             --with-mpc-include=/afs/isis/pkg/mpc-0.8.2/include   \
             --with-mpc-lib=/afs/isis/pkg/mpc-0.8.2/lib    \
             --enable-languages=c,c++,fortran

5. error output from the compiler:

   
/afs/isis.unc.edu/pkg/gcc-4.5.1/.build/@sys/gcc-4.5.1/objdir/./prev-gcc/xgcc
-B/afs/isis.unc.edu/pkg/gcc-4.5.1/.build/@sys/gcc-4.5.1/objdir/./prev-gcc/
-B/afs/isis/pkg/gcc-4.5.1/sparc-sun-solaris2.10/bin/
-B/afs/isis/pkg/gcc-4.5.1/sparc-sun-solaris2.10/bin/
-B/afs/isis/pkg/gcc-4.5.1/sparc-sun-solaris2.10/lib/ -isystem
/afs/isis/pkg/gcc-4.5.1/sparc-sun-solaris2.10/include -isystem
/afs/isis/pkg/gcc-4.5.1/sparc-sun-solaris2.10/sys-include   
-DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\"
-DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\"
-DPACKAGE=\"zlib\" -DVERSION=\"1.1.4\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1
-DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1
-DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1
-DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DHAVE_STDLIB_H=1 -DHAVE_UNISTD_H=1
-DHAVE_GETPAGESIZE=1 -DHAVE_MMAP=1 -DHAVE_MEMCPY=1 -DHAVE_STRERROR=1
-DHAVE_UNISTD_H=1 -I. -I../../zlib     -O -c -o libz_a-infback.o `test -f
'infback.c' || echo '../../zlib/'`infback.c
../../zlib/infback.c: In function 'inflateBack':
../../zlib/infback.c:623:1: internal compiler error: Segmentation Fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.

6. preprocessed infback.i file that triggers the error:

# 1 "../../zlib/infback.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "../../zlib/infback.c"
# 13 "../../zlib/infback.c"
# 1 "../../zlib/zutil.h" 1
# 17 "../../zlib/zutil.h"
# 1 "../../zlib/zlib.h" 1
# 34 "../../zlib/zlib.h"
# 1 "../../zlib/zconf.h" 1
# 261 "../../zlib/zconf.h"
typedef unsigned char Byte;

typedef unsigned int uInt;
typedef unsigned long uLong;





   typedef Byte Bytef;

typedef char charf;
typedef int intf;
typedef uInt uIntf;
typedef uLong uLongf;


   typedef void const *voidpc;
   typedef void *voidpf;
   typedef void *voidp;
# 334 "../../zlib/zconf.h"
# 1
"/afs/isis.unc.edu/pkg/gcc-4.5.1/.build/@sys/gcc-4.5.1/objdir/./prev-gcc/include-fixed/sys/feature_tests.h"
1 3 4
# 18
"/afs/isis.unc.edu/pkg/gcc-4.5.1/.build/@sys/gcc-4.5.1/objdir/./prev-gcc/include-fixed/sys/feature_tests.h"
3 4
#pragma ident "@(#)feature_tests.h      1.25    07/02/02 SMI"

# 1 "/usr/include/sys/ccompile.h" 1 3 4
# 9 "/usr/include/sys/ccompile.h" 3 4
#pragma ident "@(#)ccompile.h   1.2     04/11/08 SMI"
# 21
"/afs/isis.unc.edu/pkg/gcc-4.5.1/.build/@sys/gcc-4.5.1/objdir/./prev-gcc/include-fixed/sys/feature_tests.h"
2 3 4
# 1 "/usr/include/sys/isa_defs.h" 1 3 4
# 9 "/usr/include/sys/isa_defs.h" 3 4
#pragma ident "@(#)isa_defs.h   1.29    08/06/06 SMI"
# 22
"/afs/isis.unc.edu/pkg/gcc-4.5.1/.build/@sys/gcc-4.5.1/objdir/./prev-gcc/include-fixed/sys/feature_tests.h"
2 3 4
# 335 "../../zlib/zconf.h" 2
# 35 "../../zlib/zlib.h" 2
# 77 "../../zlib/zlib.h"
typedef voidpf (*alloc_func) (voidpf opaque, uInt items, uInt size);
typedef void (*free_func) (voidpf opaque, voidpf address);

struct internal_state;

typedef struct z_stream_s {
    Bytef *next_in;
    uInt avail_in;
    uLong total_in;

    Bytef *next_out;
    uInt avail_out;
    uLong total_out;

    char *msg;
    struct internal_state *state;

    alloc_func zalloc;
    free_func zfree;
    voidpf opaque;

    int data_type;
    uLong adler;
    uLong reserved;
} z_stream;

typedef z_stream *z_streamp;
typedef struct gz_header_s {
    int text;
    uLong time;
    int xflags;
    int os;
    Bytef *extra;
    uInt extra_len;
    uInt extra_max;
    Bytef *name;
    uInt name_max;
    Bytef *comment;
    uInt comm_max;
    int hcrc;
    int done;

} gz_header;

typedef gz_header *gz_headerp;
# 212 "../../zlib/zlib.h"
extern const char * zlibVersion (void);
# 242 "../../zlib/zlib.h"
extern int deflate (z_streamp strm, int flush);
# 328 "../../zlib/zlib.h"
extern int deflateEnd (z_streamp strm);
# 363 "../../zlib/zlib.h"
extern int inflate (z_streamp strm, int flush);
# 462 "../../zlib/zlib.h"
extern int inflateEnd (z_streamp strm);
# 538 "../../zlib/zlib.h"
extern int deflateSetDictionary (z_streamp strm, const Bytef *dictionary, uInt
dictLength)

                                                               ;
# 577 "../../zlib/zlib.h"
extern int deflateCopy (z_streamp dest, z_streamp source)
                                                      ;
# 595 "../../zlib/zlib.h"
extern int deflateReset (z_streamp strm);
# 606 "../../zlib/zlib.h"
extern int deflateParams (z_streamp strm, int level, int strategy)

                                                    ;
# 627 "../../zlib/zlib.h"
extern int deflateTune (z_streamp strm, int good_length, int max_lazy, int
nice_length, int max_chain)



                                                   ;
# 644 "../../zlib/zlib.h"
extern uLong deflateBound (z_streamp strm, uLong sourceLen)
                                                        ;







extern int deflatePrime (z_streamp strm, int bits, int value)

                                                ;
# 669 "../../zlib/zlib.h"
extern int deflateSetHeader (z_streamp strm, gz_headerp head)
                                                          ;
# 736 "../../zlib/zlib.h"
extern int inflateSetDictionary (z_streamp strm, const Bytef *dictionary, uInt
dictLength)

                                                               ;
# 758 "../../zlib/zlib.h"
extern int inflateSync (z_streamp strm);
# 773 "../../zlib/zlib.h"
extern int inflateCopy (z_streamp dest, z_streamp source)
                                                      ;
# 789 "../../zlib/zlib.h"
extern int inflateReset (z_streamp strm);
# 799 "../../zlib/zlib.h"
extern int inflatePrime (z_streamp strm, int bits, int value)

                                                ;
# 815 "../../zlib/zlib.h"
extern int inflateGetHeader (z_streamp strm, gz_headerp head)
                                                          ;
# 877 "../../zlib/zlib.h"
typedef unsigned (*in_func) (void *, unsigned char * *);
typedef int (*out_func) (void *, unsigned char *, unsigned);

extern int inflateBack (z_streamp strm, in_func in, void *in_desc, out_func
out, void *out_desc)

                                                                      ;
# 949 "../../zlib/zlib.h"
extern int inflateBackEnd (z_streamp strm);







extern uLong zlibCompileFlags (void);
# 1009 "../../zlib/zlib.h"
extern int compress (Bytef *dest, uLongf *destLen, const Bytef *source, uLong
sourceLen)
                                                                       ;
# 1024 "../../zlib/zlib.h"
extern int compress2 (Bytef *dest, uLongf *destLen, const Bytef *source, uLong
sourceLen, int level)

                                             ;
# 1040 "../../zlib/zlib.h"
extern uLong compressBound (uLong sourceLen);






extern int uncompress (Bytef *dest, uLongf *destLen, const Bytef *source, uLong
sourceLen)
                                                                         ;
# 1066 "../../zlib/zlib.h"
typedef voidp gzFile;

extern gzFile gzopen (const char *path, const char *mode);
# 1085 "../../zlib/zlib.h"
extern gzFile gzdopen (int fd, const char *mode);
# 1098 "../../zlib/zlib.h"
extern int gzsetparams (gzFile file, int level, int strategy);







extern int gzread (gzFile file, voidp buf, unsigned len);







extern int gzwrite (gzFile file, voidpc buf, unsigned len)
                                                             ;

extern int gzprintf (gzFile file, const char *format, ...);
# 1135 "../../zlib/zlib.h"
extern int gzputs (gzFile file, const char *s);






extern char * gzgets (gzFile file, char *buf, int len);
# 1151 "../../zlib/zlib.h"
extern int gzputc (gzFile file, int c);





extern int gzgetc (gzFile file);





extern int gzungetc (int c, gzFile file);
# 1173 "../../zlib/zlib.h"
extern int gzflush (gzFile file, int flush);
# 1183 "../../zlib/zlib.h"
extern long gzseek (gzFile file, long offset, int whence)
                                                                  ;
# 1201 "../../zlib/zlib.h"
extern int gzrewind (gzFile file);






extern long gztell (gzFile file);
# 1217 "../../zlib/zlib.h"
extern int gzeof (gzFile file);





extern int gzdirect (gzFile file);





extern int gzclose (gzFile file);






extern const char * gzerror (gzFile file, int *errnum);
# 1245 "../../zlib/zlib.h"
extern void gzclearerr (gzFile file);
# 1260 "../../zlib/zlib.h"
extern uLong adler32 (uLong adler, const Bytef *buf, uInt len);
# 1276 "../../zlib/zlib.h"
extern uLong adler32_combine (uLong adler1, uLong adler2, long len2)
                                                        ;

extern uLong crc32 (uLong crc, const Bytef *buf, uInt len);
# 1301 "../../zlib/zlib.h"
extern uLong crc32_combine (uLong crc1, uLong crc2, long len2);
# 1317 "../../zlib/zlib.h"
extern int deflateInit_ (z_streamp strm, int level, const char *version, int
stream_size)
                                                                           ;
extern int inflateInit_ (z_streamp strm, const char *version, int stream_size)
                                                                           ;
extern int deflateInit2_ (z_streamp strm, int level, int method, int
windowBits, int memLevel, int strategy, const char *version, int stream_size)


                                                       ;
extern int inflateInit2_ (z_streamp strm, int windowBits, const char *version,
int stream_size)
                                                                            ;
extern int inflateBackInit_ (z_streamp strm, int windowBits, unsigned char
*window, const char *version, int stream_size)


                                                          ;
# 1349 "../../zlib/zlib.h"
extern const char * zError (int);
extern int inflateSyncPoint (z_streamp z);
extern const uLongf * get_crc_table (void);
# 18 "../../zlib/zutil.h" 2



# 1
"/afs/isis.unc.edu/pkg/gcc-4.5.1/.build/@sys/gcc-4.5.1/objdir/./prev-gcc/include/stddef.h"
1 3 4
# 149
"/afs/isis.unc.edu/pkg/gcc-4.5.1/.build/@sys/gcc-4.5.1/objdir/./prev-gcc/include/stddef.h"
3 4
typedef int ptrdiff_t;
# 211
"/afs/isis.unc.edu/pkg/gcc-4.5.1/.build/@sys/gcc-4.5.1/objdir/./prev-gcc/include/stddef.h"
3 4
typedef unsigned int size_t;
# 323
"/afs/isis.unc.edu/pkg/gcc-4.5.1/.build/@sys/gcc-4.5.1/objdir/./prev-gcc/include/stddef.h"
3 4
typedef long int wchar_t;
# 22 "../../zlib/zutil.h" 2

# 1 "/usr/include/string.h" 1 3 4
# 16 "/usr/include/string.h" 3 4
#pragma ident "@(#)string.h     1.27    07/01/14 SMI"

# 1 "/usr/include/iso/string_iso.h" 1 3 4
# 28 "/usr/include/iso/string_iso.h" 3 4
#pragma ident "@(#)string_iso.h 1.5     04/06/18 SMI"
# 59 "/usr/include/iso/string_iso.h" 3 4
extern int memcmp(const void *, const void *, size_t);
extern void *memcpy(void *, const void *, size_t);
extern void *memmove(void *, const void *, size_t);
extern void *memset(void *, int, size_t);
extern char *strcat(char *, const char *);
extern int strcmp(const char *, const char *);
extern char *strcpy(char *, const char *);
extern int strcoll(const char *, const char *);
extern size_t strcspn(const char *, const char *);
extern char *strerror(int);
extern size_t strlen(const char *);
extern char *strncat(char *, const char *, size_t);
extern int strncmp(const char *, const char *, size_t);
extern char *strncpy(char *, const char *, size_t);
extern size_t strspn(const char *, const char *);
extern char *strtok(char *, const char *);
extern size_t strxfrm(char *, const char *, size_t);
# 129 "/usr/include/iso/string_iso.h" 3 4
extern void *memchr(const void *, int, size_t);
extern char *strchr(const char *, int);
extern char *strpbrk(const char *, const char *);
extern char *strrchr(const char *, int);
extern char *strstr(const char *, const char *);
# 19 "/usr/include/string.h" 2 3 4
# 59 "/usr/include/string.h" 3 4
extern int strerror_r(int, char *, size_t);





extern char *strtok_r(char *, const char *,
 char **);




extern void *memccpy(void *, const void *,
  int, size_t);




extern int uucopy(const void *, void *, size_t);
extern int uucopystr(const void *, void *, size_t);
extern char *strsignal(int);
extern int ffs(int);
extern int strcasecmp(const char *, const char *);
extern int strncasecmp(const char *, const char *, size_t);
extern size_t strlcpy(char *, const char *, size_t);
extern size_t strlcat(char *, const char *, size_t);





extern char *strdup(const char *);
# 24 "../../zlib/zutil.h" 2
# 1 "/usr/include/stdlib.h" 1 3 4
# 16 "/usr/include/stdlib.h" 3 4
#pragma ident "@(#)stdlib.h     1.51    04/06/30 SMI"

# 1 "/usr/include/iso/stdlib_iso.h" 1 3 4
# 28 "/usr/include/iso/stdlib_iso.h" 3 4
#pragma ident "@(#)stdlib_iso.h 1.9     04/09/28 SMI"
# 37 "/usr/include/iso/stdlib_iso.h" 3 4
extern unsigned char __ctype[];
# 48 "/usr/include/iso/stdlib_iso.h" 3 4
typedef struct {
 int quot;
 int rem;
} div_t;

typedef struct {
 long quot;
 long rem;
} ldiv_t;
# 107 "/usr/include/iso/stdlib_iso.h" 3 4
extern void abort(void) __attribute__((__noreturn__));
extern int abs(int);
extern int atexit(void (*)(void));
extern double atof(const char *);
extern int atoi(const char *);
extern long int atol(const char *);
extern void *bsearch(const void *, const void *, size_t, size_t,
 int (*)(const void *, const void *));






extern void *calloc(size_t, size_t);
extern div_t div(int, int);
extern void exit(int)
 __attribute__((__noreturn__));
extern void free(void *);
extern char *getenv(const char *);
extern long int labs(long);
extern ldiv_t ldiv(long, long);
extern void *malloc(size_t);
extern int mblen(const char *, size_t);
extern size_t mbstowcs(wchar_t *, const char *,
 size_t);
extern int mbtowc(wchar_t *, const char *, size_t);
extern void qsort(void *, size_t, size_t, int (*)(const void *, const void *));


extern int rand(void);
extern void *realloc(void *, size_t);
extern void srand(unsigned int);
extern double strtod(const char *, char **);
extern long int strtol(const char *, char **, int);
extern unsigned long int strtoul(const char *,
 char **, int);
extern int system(const char *);
extern int wctomb(char *, wchar_t);
extern size_t wcstombs(char *, const wchar_t *,
 size_t);
# 19 "/usr/include/stdlib.h" 2 3 4
# 1 "/usr/include/iso/stdlib_c99.h" 1 3 4
# 20 "/usr/include/iso/stdlib_c99.h" 3 4
#pragma ident "@(#)stdlib_c99.h 1.2     04/03/29 SMI"
# 35 "/usr/include/iso/stdlib_c99.h" 3 4
typedef struct {
 long long quot;
 long long rem;
} lldiv_t;







extern void _Exit(int);
extern float strtof(const char *, char **);
extern long double strtold(const char *, char **);


extern long long atoll(const char *);
extern long long llabs(long long);
extern lldiv_t lldiv(long long, long long);
extern long long strtoll(const char *, char **,
 int);
extern unsigned long long strtoull(const char *,
 char **, int);
# 20 "/usr/include/stdlib.h" 2 3 4
# 72 "/usr/include/stdlib.h" 3 4
typedef long uid_t;
# 103 "/usr/include/stdlib.h" 3 4
extern int rand_r(unsigned int *);


extern void _exithandle(void);




extern double drand48(void);
extern double erand48(unsigned short *);
extern long jrand48(unsigned short *);
extern void lcong48(unsigned short *);
extern long lrand48(void);
extern long mrand48(void);
extern long nrand48(unsigned short *);
extern unsigned short *seed48(unsigned short *);
extern void srand48(long);
extern int putenv(char *);
extern void setkey(const char *);
# 140 "/usr/include/stdlib.h" 3 4
typedef int ssize_t;



extern void swab(const char *, char *, ssize_t);

extern int mkstemp(char *);




extern int mkstemp64(char *);





extern long a64l(const char *);
extern char *ecvt(double, int, int *, int *);
extern char *fcvt(double, int, int *, int *);
extern char *gcvt(double, int, char *);
extern int getsubopt(char **, char *const *, char **);
extern int grantpt(int);
extern char *initstate(unsigned, char *, size_t);
extern char *l64a(long);
extern char *mktemp(char *);
extern char *ptsname(int);
extern long random(void);
extern char *realpath(const char *, char *);
extern char *setstate(const char *);
extern void srandom(unsigned);
extern int unlockpt(int);


extern int ttyslot(void);
extern void *valloc(size_t);






extern int posix_openpt(int);
extern int setenv(const char *, const char *, int);
extern int unsetenv(const char *);




extern void closefrom(int);
extern int dup2(int, int);
extern int fdwalk(int (*)(void *, int), void *);
extern char *qecvt(long double, int, int *, int *);
extern char *qfcvt(long double, int, int *, int *);
extern char *qgcvt(long double, int, char *);
extern char *getcwd(char *, size_t);
extern const char *getexecname(void);
extern char *getlogin(void);
extern int getopt(int, char *const *, const char *);
extern char *optarg;
extern int optind, opterr, optopt;
extern char *getpass(const char *);
extern char *getpassphrase(const char *);
extern int getpw(uid_t, char *);
extern int isatty(int);
extern void *memalign(size_t, size_t);
extern char *ttyname(int);


extern char *lltostr(long long, char *);
extern char *ulltostr(unsigned long long, char *);
# 25 "../../zlib/zutil.h" 2
# 38 "../../zlib/zutil.h"
# 1 "/usr/include/errno.h" 1 3 4
# 17 "/usr/include/errno.h" 3 4
#pragma ident "@(#)errno.h      1.17    03/01/03 SMI"

# 1 "/usr/include/sys/errno.h" 1 3 4
# 9 "/usr/include/sys/errno.h" 3 4
#pragma ident "@(#)errno.h      1.20    00/01/12 SMI"
# 24 "/usr/include/errno.h" 2 3 4
# 40 "/usr/include/errno.h" 3 4
extern int errno;
# 39 "../../zlib/zutil.h" 2
# 47 "../../zlib/zutil.h"
typedef unsigned char uch;
typedef uch uchf;
typedef unsigned short ush;
typedef ush ushf;
typedef unsigned long ulg;

extern const char * const z_errmsg[10];
# 261 "../../zlib/zutil.h"
voidpf zcalloc (voidpf opaque, unsigned items, unsigned size);
void zcfree (voidpf opaque, voidpf ptr);
# 14 "../../zlib/infback.c" 2
# 1 "../../zlib/inftrees.h" 1
# 24 "../../zlib/inftrees.h"
typedef struct {
    unsigned char op;
    unsigned char bits;
    unsigned short val;
} code;
# 47 "../../zlib/inftrees.h"
typedef enum {
    CODES,
    LENS,
    DISTS
} codetype;

extern int inflate_table (codetype type, unsigned short *lens, unsigned codes,
code * *table, unsigned *bits, unsigned short *work)

                                                                           ;
# 15 "../../zlib/infback.c" 2
# 1 "../../zlib/inflate.h" 1
# 20 "../../zlib/inflate.h"
typedef enum {
    HEAD,
    FLAGS,
    TIME,
    OS,
    EXLEN,
    EXTRA,
    NAME,
    COMMENT,
    HCRC,
    DICTID,
    DICT,
        TYPE,
        TYPEDO,
        STORED,
        COPY,
        TABLE,
        LENLENS,
        CODELENS,
            LEN,
            LENEXT,
            DIST,
            DISTEXT,
            MATCH,
            LIT,
    CHECK,
    LENGTH,
    DONE,
    BAD,
    MEM,
    SYNC
} inflate_mode;
# 77 "../../zlib/inflate.h"
struct inflate_state {
    inflate_mode mode;
    int last;
    int wrap;
    int havedict;
    int flags;
    unsigned dmax;
    unsigned long check;
    unsigned long total;
    gz_headerp head;

    unsigned wbits;
    unsigned wsize;
    unsigned whave;
    unsigned write;
    unsigned char *window;

    unsigned long hold;
    unsigned bits;

    unsigned length;
    unsigned offset;

    unsigned extra;

    code const *lencode;
    code const *distcode;
    unsigned lenbits;
    unsigned distbits;

    unsigned ncode;
    unsigned nlen;
    unsigned ndist;
    unsigned have;
    code *next;
    unsigned short lens[320];
    unsigned short work[288];
    code codes[2048];
};
# 16 "../../zlib/infback.c" 2
# 1 "../../zlib/inffast.h" 1
# 11 "../../zlib/inffast.h"
void inflate_fast (z_streamp strm, unsigned start);
# 17 "../../zlib/infback.c" 2


static void fixedtables (struct inflate_state *state);
# 28 "../../zlib/infback.c"
int inflateBackInit_(strm, windowBits, window, version, stream_size)
z_streamp strm;
int windowBits;
unsigned char *window;
const char *version;
int stream_size;
{
    struct inflate_state *state;

    if (version == 0 || version[0] != "1.2.3"[0] ||
        stream_size != (int)(sizeof(z_stream)))
        return (-6);
    if (strm == 0 || window == 0 ||
        windowBits < 8 || windowBits > 15)
        return (-2);
    strm->msg = 0;
    if (strm->zalloc == (alloc_func)0) {
        strm->zalloc = zcalloc;
        strm->opaque = (voidpf)0;
    }
    if (strm->zfree == (free_func)0) strm->zfree = zcfree;
    state = (struct inflate_state *)(*((strm)->zalloc))((strm)->opaque, (1),
(sizeof(struct inflate_state)))
                                                                            ;
    if (state == 0) return (-4);
    ;
    strm->state = (struct internal_state *)state;
    state->dmax = 32768U;
    state->wbits = windowBits;
    state->wsize = 1U << windowBits;
    state->window = window;
    state->write = 0;
    state->whave = 0;
    return 0;
}
# 73 "../../zlib/infback.c"
static void fixedtables(state)
struct inflate_state *state;
{
# 108 "../../zlib/infback.c"
# 1 "../../zlib/inffixed.h" 1
# 10 "../../zlib/inffixed.h"
    static const code lenfix[512] = {
        {96,7,0},{0,8,80},{0,8,16},{20,8,115},{18,7,31},{0,8,112},{0,8,48},
        {0,9,192},{16,7,10},{0,8,96},{0,8,32},{0,9,160},{0,8,0},{0,8,128},
        {0,8,64},{0,9,224},{16,7,6},{0,8,88},{0,8,24},{0,9,144},{19,7,59},
        {0,8,120},{0,8,56},{0,9,208},{17,7,17},{0,8,104},{0,8,40},{0,9,176},
        {0,8,8},{0,8,136},{0,8,72},{0,9,240},{16,7,4},{0,8,84},{0,8,20},
        {21,8,227},{19,7,43},{0,8,116},{0,8,52},{0,9,200},{17,7,13},{0,8,100},
        {0,8,36},{0,9,168},{0,8,4},{0,8,132},{0,8,68},{0,9,232},{16,7,8},
        {0,8,92},{0,8,28},{0,9,152},{20,7,83},{0,8,124},{0,8,60},{0,9,216},
        {18,7,23},{0,8,108},{0,8,44},{0,9,184},{0,8,12},{0,8,140},{0,8,76},
        {0,9,248},{16,7,3},{0,8,82},{0,8,18},{21,8,163},{19,7,35},{0,8,114},
        {0,8,50},{0,9,196},{17,7,11},{0,8,98},{0,8,34},{0,9,164},{0,8,2},
        {0,8,130},{0,8,66},{0,9,228},{16,7,7},{0,8,90},{0,8,26},{0,9,148},
        {20,7,67},{0,8,122},{0,8,58},{0,9,212},{18,7,19},{0,8,106},{0,8,42},
        {0,9,180},{0,8,10},{0,8,138},{0,8,74},{0,9,244},{16,7,5},{0,8,86},
        {0,8,22},{64,8,0},{19,7,51},{0,8,118},{0,8,54},{0,9,204},{17,7,15},
        {0,8,102},{0,8,38},{0,9,172},{0,8,6},{0,8,134},{0,8,70},{0,9,236},
        {16,7,9},{0,8,94},{0,8,30},{0,9,156},{20,7,99},{0,8,126},{0,8,62},
        {0,9,220},{18,7,27},{0,8,110},{0,8,46},{0,9,188},{0,8,14},{0,8,142},
        {0,8,78},{0,9,252},{96,7,0},{0,8,81},{0,8,17},{21,8,131},{18,7,31},
        {0,8,113},{0,8,49},{0,9,194},{16,7,10},{0,8,97},{0,8,33},{0,9,162},
        {0,8,1},{0,8,129},{0,8,65},{0,9,226},{16,7,6},{0,8,89},{0,8,25},
        {0,9,146},{19,7,59},{0,8,121},{0,8,57},{0,9,210},{17,7,17},{0,8,105},
        {0,8,41},{0,9,178},{0,8,9},{0,8,137},{0,8,73},{0,9,242},{16,7,4},
        {0,8,85},{0,8,21},{16,8,258},{19,7,43},{0,8,117},{0,8,53},{0,9,202},
        {17,7,13},{0,8,101},{0,8,37},{0,9,170},{0,8,5},{0,8,133},{0,8,69},
        {0,9,234},{16,7,8},{0,8,93},{0,8,29},{0,9,154},{20,7,83},{0,8,125},
        {0,8,61},{0,9,218},{18,7,23},{0,8,109},{0,8,45},{0,9,186},{0,8,13},
        {0,8,141},{0,8,77},{0,9,250},{16,7,3},{0,8,83},{0,8,19},{21,8,195},
        {19,7,35},{0,8,115},{0,8,51},{0,9,198},{17,7,11},{0,8,99},{0,8,35},
        {0,9,166},{0,8,3},{0,8,131},{0,8,67},{0,9,230},{16,7,7},{0,8,91},
        {0,8,27},{0,9,150},{20,7,67},{0,8,123},{0,8,59},{0,9,214},{18,7,19},
        {0,8,107},{0,8,43},{0,9,182},{0,8,11},{0,8,139},{0,8,75},{0,9,246},
        {16,7,5},{0,8,87},{0,8,23},{64,8,0},{19,7,51},{0,8,119},{0,8,55},
        {0,9,206},{17,7,15},{0,8,103},{0,8,39},{0,9,174},{0,8,7},{0,8,135},
        {0,8,71},{0,9,238},{16,7,9},{0,8,95},{0,8,31},{0,9,158},{20,7,99},
        {0,8,127},{0,8,63},{0,9,222},{18,7,27},{0,8,111},{0,8,47},{0,9,190},
        {0,8,15},{0,8,143},{0,8,79},{0,9,254},{96,7,0},{0,8,80},{0,8,16},
        {20,8,115},{18,7,31},{0,8,112},{0,8,48},{0,9,193},{16,7,10},{0,8,96},
        {0,8,32},{0,9,161},{0,8,0},{0,8,128},{0,8,64},{0,9,225},{16,7,6},
        {0,8,88},{0,8,24},{0,9,145},{19,7,59},{0,8,120},{0,8,56},{0,9,209},
        {17,7,17},{0,8,104},{0,8,40},{0,9,177},{0,8,8},{0,8,136},{0,8,72},
        {0,9,241},{16,7,4},{0,8,84},{0,8,20},{21,8,227},{19,7,43},{0,8,116},
        {0,8,52},{0,9,201},{17,7,13},{0,8,100},{0,8,36},{0,9,169},{0,8,4},
        {0,8,132},{0,8,68},{0,9,233},{16,7,8},{0,8,92},{0,8,28},{0,9,153},
        {20,7,83},{0,8,124},{0,8,60},{0,9,217},{18,7,23},{0,8,108},{0,8,44},
        {0,9,185},{0,8,12},{0,8,140},{0,8,76},{0,9,249},{16,7,3},{0,8,82},
        {0,8,18},{21,8,163},{19,7,35},{0,8,114},{0,8,50},{0,9,197},{17,7,11},
        {0,8,98},{0,8,34},{0,9,165},{0,8,2},{0,8,130},{0,8,66},{0,9,229},
        {16,7,7},{0,8,90},{0,8,26},{0,9,149},{20,7,67},{0,8,122},{0,8,58},
        {0,9,213},{18,7,19},{0,8,106},{0,8,42},{0,9,181},{0,8,10},{0,8,138},
        {0,8,74},{0,9,245},{16,7,5},{0,8,86},{0,8,22},{64,8,0},{19,7,51},
        {0,8,118},{0,8,54},{0,9,205},{17,7,15},{0,8,102},{0,8,38},{0,9,173},
        {0,8,6},{0,8,134},{0,8,70},{0,9,237},{16,7,9},{0,8,94},{0,8,30},
        {0,9,157},{20,7,99},{0,8,126},{0,8,62},{0,9,221},{18,7,27},{0,8,110},
        {0,8,46},{0,9,189},{0,8,14},{0,8,142},{0,8,78},{0,9,253},{96,7,0},
        {0,8,81},{0,8,17},{21,8,131},{18,7,31},{0,8,113},{0,8,49},{0,9,195},
        {16,7,10},{0,8,97},{0,8,33},{0,9,163},{0,8,1},{0,8,129},{0,8,65},
        {0,9,227},{16,7,6},{0,8,89},{0,8,25},{0,9,147},{19,7,59},{0,8,121},
        {0,8,57},{0,9,211},{17,7,17},{0,8,105},{0,8,41},{0,9,179},{0,8,9},
        {0,8,137},{0,8,73},{0,9,243},{16,7,4},{0,8,85},{0,8,21},{16,8,258},
        {19,7,43},{0,8,117},{0,8,53},{0,9,203},{17,7,13},{0,8,101},{0,8,37},
        {0,9,171},{0,8,5},{0,8,133},{0,8,69},{0,9,235},{16,7,8},{0,8,93},
        {0,8,29},{0,9,155},{20,7,83},{0,8,125},{0,8,61},{0,9,219},{18,7,23},
        {0,8,109},{0,8,45},{0,9,187},{0,8,13},{0,8,141},{0,8,77},{0,9,251},
        {16,7,3},{0,8,83},{0,8,19},{21,8,195},{19,7,35},{0,8,115},{0,8,51},
        {0,9,199},{17,7,11},{0,8,99},{0,8,35},{0,9,167},{0,8,3},{0,8,131},
        {0,8,67},{0,9,231},{16,7,7},{0,8,91},{0,8,27},{0,9,151},{20,7,67},
        {0,8,123},{0,8,59},{0,9,215},{18,7,19},{0,8,107},{0,8,43},{0,9,183},
        {0,8,11},{0,8,139},{0,8,75},{0,9,247},{16,7,5},{0,8,87},{0,8,23},
        {64,8,0},{19,7,51},{0,8,119},{0,8,55},{0,9,207},{17,7,15},{0,8,103},
        {0,8,39},{0,9,175},{0,8,7},{0,8,135},{0,8,71},{0,9,239},{16,7,9},
        {0,8,95},{0,8,31},{0,9,159},{20,7,99},{0,8,127},{0,8,63},{0,9,223},
        {18,7,27},{0,8,111},{0,8,47},{0,9,191},{0,8,15},{0,8,143},{0,8,79},
        {0,9,255}
    };

    static const code distfix[32] = {
        {16,5,1},{23,5,257},{19,5,17},{27,5,4097},{17,5,5},{25,5,1025},
        {21,5,65},{29,5,16385},{16,5,3},{24,5,513},{20,5,33},{28,5,8193},
        {18,5,9},{26,5,2049},{22,5,129},{64,5,0},{16,5,2},{23,5,385},
        {19,5,25},{27,5,6145},{17,5,7},{25,5,1537},{21,5,97},{29,5,24577},
        {16,5,4},{24,5,769},{20,5,49},{28,5,12289},{18,5,13},{26,5,3073},
        {22,5,193},{64,5,0}
    };
# 109 "../../zlib/infback.c" 2

    state->lencode = lenfix;
    state->lenbits = 9;
    state->distcode = distfix;
    state->distbits = 5;
}
# 241 "../../zlib/infback.c"
int inflateBack(strm, in, in_desc, out, out_desc)
z_streamp strm;
in_func in;
void *in_desc;
out_func out;
void *out_desc;
{
    struct inflate_state *state;
    unsigned char *next;
    unsigned char *put;
    unsigned have, left;
    unsigned long hold;
    unsigned bits;
    unsigned copy;
    unsigned char *from;
    code this;
    code last;
    unsigned len;
    int ret;
    static const unsigned short order[19] =
        {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};


    if (strm == 0 || strm->state == 0)
        return (-2);
    state = (struct inflate_state *)strm->state;


    strm->msg = 0;
    state->mode = TYPE;
    state->last = 0;
    state->whave = 0;
    next = strm->next_in;
    have = next != 0 ? strm->avail_in : 0;
    hold = 0;
    bits = 0;
    put = state->window;
    left = state->wsize;


    for (;;)
        switch (state->mode) {
        case TYPE:
            if (state->last) {
                do { hold >>= bits & 7; bits -= bits & 7; } while (0);
                state->mode = DONE;
                break;
            }
            do { while (bits < (unsigned)(3)) do { do { if (have == 0) { have =
in(in_desc, &next); if (have == 0) { next = 0; ret = (-5); goto inf_le
            state->last = ((unsigned)hold & ((1U << (1)) - 1));
            do { hold >>= (1); bits -= (unsigned)(1); } while (0);
            switch (((unsigned)hold & ((1U << (2)) - 1))) {
            case 0:

                                                      ;
                state->mode = STORED;
                break;
            case 1:
                fixedtables(state);

                                                      ;
                state->mode = LEN;
                break;
            case 2:

                                                      ;
                state->mode = TABLE;
                break;
            case 3:
                strm->msg = (char *)"invalid block type";
                state->mode = BAD;
            }
            do { hold >>= (2); bits -= (unsigned)(2); } while (0);
            break;

        case STORED:

            do { hold >>= bits & 7; bits -= bits & 7; } while (0);
            do { while (bits < (unsigned)(32)) do { do { if (have == 0) { have
= in(in_desc, &next); if (have == 0) { next = 0; ret = (-5); goto inf_l
            if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) {
                strm->msg = (char *)"invalid stored block lengths";
                state->mode = BAD;
                break;
            }
            state->length = (unsigned)hold & 0xffff;

                                   ;
            do { hold = 0; bits = 0; } while (0);


            while (state->length != 0) {
                copy = state->length;
                do { if (have == 0) { have = in(in_desc, &next); if (have == 0)
{ next = 0; ret = (-5); goto inf_leave; } } } while (0);
                do { if (left == 0) { put = state->window; left = state->wsize;
state->whave = left; if (out(out_desc, put, left)) { ret = (-5); goto 
                if (copy > have) copy = have;
                if (copy > left) copy = left;
                memcpy(put, next, copy);
                have -= copy;
                next += copy;
                left -= copy;
                put += copy;
                state->length -= copy;
            }
            ;
            state->mode = TYPE;
            break;

        case TABLE:

            do { while (bits < (unsigned)(14)) do { do { if (have == 0) { have
= in(in_desc, &next); if (have == 0) { next = 0; ret = (-5); goto inf_l
            state->nlen = ((unsigned)hold & ((1U << (5)) - 1)) + 257;
            do { hold >>= (5); bits -= (unsigned)(5); } while (0);
            state->ndist = ((unsigned)hold & ((1U << (5)) - 1)) + 1;
            do { hold >>= (5); bits -= (unsigned)(5); } while (0);
            state->ncode = ((unsigned)hold & ((1U << (4)) - 1)) + 4;
            do { hold >>= (4); bits -= (unsigned)(4); } while (0);

            if (state->nlen > 286 || state->ndist > 30) {
                strm->msg = (char *)"too many length or distance symbols";
                state->mode = BAD;
                break;
            }

            ;


            state->have = 0;
            while (state->have < state->ncode) {
                do { while (bits < (unsigned)(3)) do { do { if (have == 0) {
have = in(in_desc, &next); if (have == 0) { next = 0; ret = (-5); goto in
                state->lens[order[state->have++]] = (unsigned
short)((unsigned)hold & ((1U << (3)) - 1));
                do { hold >>= (3); bits -= (unsigned)(3); } while (0);
            }
            while (state->have < 19)
                state->lens[order[state->have++]] = 0;
            state->next = state->codes;
            state->lencode = (code const *)(state->next);
            state->lenbits = 7;
            ret = inflate_table(CODES, state->lens, 19, &(state->next),
                                &(state->lenbits), state->work);
            if (ret) {
                strm->msg = (char *)"invalid code lengths set";
                state->mode = BAD;
                break;
            }
            ;


            state->have = 0;
            while (state->have < state->nlen + state->ndist) {
                for (;;) {
                    this = state->lencode[((unsigned)hold & ((1U <<
(state->lenbits)) - 1))];
                    if ((unsigned)(this.bits) <= bits) break;
                    do { do { if (have == 0) { have = in(in_desc, &next); if
(have == 0) { next = 0; ret = (-5); goto inf_leave; } } } while (0); have
                }
                if (this.val < 16) {
                    do { while (bits < (unsigned)(this.bits)) do { do { if
(have == 0) { have = in(in_desc, &next); if (have == 0) { next = 0; ret = (
                    do { hold >>= (this.bits); bits -= (unsigned)(this.bits); }
while (0);
                    state->lens[state->have++] = this.val;
                }
                else {
                    if (this.val == 16) {
                        do { while (bits < (unsigned)(this.bits + 2)) do { do {
if (have == 0) { have = in(in_desc, &next); if (have == 0) { next = 0;
                        do { hold >>= (this.bits); bits -=
(unsigned)(this.bits); } while (0);
                        if (state->have == 0) {
                            strm->msg = (char *)"invalid bit length repeat";
                            state->mode = BAD;
                            break;
                        }
                        len = (unsigned)(state->lens[state->have - 1]);
                        copy = 3 + ((unsigned)hold & ((1U << (2)) - 1));
                        do { hold >>= (2); bits -= (unsigned)(2); } while (0);
                    }
                    else if (this.val == 17) {
                        do { while (bits < (unsigned)(this.bits + 3)) do { do {
if (have == 0) { have = in(in_desc, &next); if (have == 0) { next = 0;
                        do { hold >>= (this.bits); bits -=
(unsigned)(this.bits); } while (0);
                        len = 0;
                        copy = 3 + ((unsigned)hold & ((1U << (3)) - 1));
                        do { hold >>= (3); bits -= (unsigned)(3); } while (0);
                    }
                    else {
                        do { while (bits < (unsigned)(this.bits + 7)) do { do {
if (have == 0) { have = in(in_desc, &next); if (have == 0) { next = 0;
                        do { hold >>= (this.bits); bits -=
(unsigned)(this.bits); } while (0);
                        len = 0;
                        copy = 11 + ((unsigned)hold & ((1U << (7)) - 1));
                        do { hold >>= (7); bits -= (unsigned)(7); } while (0);
                    }
                    if (state->have + copy > state->nlen + state->ndist) {
                        strm->msg = (char *)"invalid bit length repeat";
                        state->mode = BAD;
                        break;
                    }
                    while (copy--)
                        state->lens[state->have++] = (unsigned short)len;
                }
            }


            if (state->mode == BAD) break;


            state->next = state->codes;
            state->lencode = (code const *)(state->next);
            state->lenbits = 9;
            ret = inflate_table(LENS, state->lens, state->nlen, &(state->next),
                                &(state->lenbits), state->work);
            if (ret) {
                strm->msg = (char *)"invalid literal/lengths set";
                state->mode = BAD;
                break;
            }
            state->distcode = (code const *)(state->next);
            state->distbits = 6;
            ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist,
                            &(state->next), &(state->distbits), state->work);
            if (ret) {
                strm->msg = (char *)"invalid distances set";
                state->mode = BAD;
                break;
            }
            ;
            state->mode = LEN;

        case LEN:

            if (have >= 6 && left >= 258) {
                do { strm->next_out = put; strm->avail_out = left;
strm->next_in = next; strm->avail_in = have; state->hold = hold; state->bits =
bits
                if (state->whave < state->wsize)
                    state->whave = state->wsize - left;
                inflate_fast(strm, state->wsize);
                do { put = strm->next_out; left = strm->avail_out; next =
strm->next_in; have = strm->avail_in; hold = state->hold; bits = state->bits
                break;
            }


            for (;;) {
                this = state->lencode[((unsigned)hold & ((1U <<
(state->lenbits)) - 1))];
                if ((unsigned)(this.bits) <= bits) break;
                do { do { if (have == 0) { have = in(in_desc, &next); if (have
== 0) { next = 0; ret = (-5); goto inf_leave; } } } while (0); have--; 
            }
            if (this.op && (this.op & 0xf0) == 0) {
                last = this;
                for (;;) {
                    this = state->lencode[last.val +
                            (((unsigned)hold & ((1U << (last.bits + last.op)) -
1)) >> last.bits)];
                    if ((unsigned)(last.bits + this.bits) <= bits) break;
                    do { do { if (have == 0) { have = in(in_desc, &next); if
(have == 0) { next = 0; ret = (-5); goto inf_leave; } } } while (0); have
                }
                do { hold >>= (last.bits); bits -= (unsigned)(last.bits); }
while (0);
            }
            do { hold >>= (this.bits); bits -= (unsigned)(this.bits); } while
(0);
            state->length = (unsigned)this.val;


            if (this.op == 0) {


                                                                       ;
                do { if (left == 0) { put = state->window; left = state->wsize;
state->whave = left; if (out(out_desc, put, left)) { ret = (-5); goto 
                *put++ = (unsigned char)(state->length);
                left--;
                state->mode = LEN;
                break;
            }


            if (this.op & 32) {
                ;
                state->mode = TYPE;
                break;
            }


            if (this.op & 64) {
                strm->msg = (char *)"invalid literal/length code";
                state->mode = BAD;
                break;
            }


            state->extra = (unsigned)(this.op) & 15;
            if (state->extra != 0) {
                do { while (bits < (unsigned)(state->extra)) do { do { if (have
== 0) { have = in(in_desc, &next); if (have == 0) { next = 0; ret = (-
                state->length += ((unsigned)hold & ((1U << (state->extra)) -
1));
                do { hold >>= (state->extra); bits -= (unsigned)(state->extra);
} while (0);
            }
            ;


            for (;;) {
                this = state->distcode[((unsigned)hold & ((1U <<
(state->distbits)) - 1))];
                if ((unsigned)(this.bits) <= bits) break;
                do { do { if (have == 0) { have = in(in_desc, &next); if (have
== 0) { next = 0; ret = (-5); goto inf_leave; } } } while (0); have--; 
            }
            if ((this.op & 0xf0) == 0) {
                last = this;
                for (;;) {
                    this = state->distcode[last.val +
                            (((unsigned)hold & ((1U << (last.bits + last.op)) -
1)) >> last.bits)];
                    if ((unsigned)(last.bits + this.bits) <= bits) break;
                    do { do { if (have == 0) { have = in(in_desc, &next); if
(have == 0) { next = 0; ret = (-5); goto inf_leave; } } } while (0); have
                }
                do { hold >>= (last.bits); bits -= (unsigned)(last.bits); }
while (0);
            }
            do { hold >>= (this.bits); bits -= (unsigned)(this.bits); } while
(0);
            if (this.op & 64) {
                strm->msg = (char *)"invalid distance code";
                state->mode = BAD;
                break;
            }
            state->offset = (unsigned)this.val;


            state->extra = (unsigned)(this.op) & 15;
            if (state->extra != 0) {
                do { while (bits < (unsigned)(state->extra)) do { do { if (have
== 0) { have = in(in_desc, &next); if (have == 0) { next = 0; ret = (-
                state->offset += ((unsigned)hold & ((1U << (state->extra)) -
1));
                do { hold >>= (state->extra); bits -= (unsigned)(state->extra);
} while (0);
            }
            if (state->offset > state->wsize - (state->whave < state->wsize ?
                                                left : 0)) {
                strm->msg = (char *)"invalid distance too far back";
                state->mode = BAD;
                break;
            }
            ;


            do {
                do { if (left == 0) { put = state->window; left = state->wsize;
state->whave = left; if (out(out_desc, put, left)) { ret = (-5); goto 
                copy = state->wsize - state->offset;
                if (copy < left) {
                    from = put + copy;
                    copy = left - copy;
                }
                else {
                    from = put - state->offset;
                    copy = left;
                }
                if (copy > state->length) copy = state->length;
                state->length -= copy;
                left -= copy;
                do {
                    *put++ = *from++;
                } while (--copy);
            } while (state->length != 0);
            break;

        case DONE:

            ret = 1;
            if (left < state->wsize) {
                if (out(out_desc, state->window, state->wsize - left))
                    ret = (-5);
            }
            goto inf_leave;

        case BAD:
            ret = (-3);
            goto inf_leave;

        default:
            ret = (-2);
            goto inf_leave;
        }


  inf_leave:
    strm->next_in = next;
    strm->avail_in = have;
    return ret;
}

int inflateBackEnd(strm)
z_streamp strm;
{
    if (strm == 0 || strm->state == 0 || strm->zfree == (free_func)0)
        return (-2);
    (*((strm)->zfree))((strm)->opaque, (voidpf)(strm->state));
    strm->state = 0;
    ;
    return 0;
}


-- 
           Summary: internal compiler error gcc 4.5.1
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: bbiswas at email dot unc dot edu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45407



More information about the Gcc-bugs mailing list