From: epperly@valeron.che.wisc.edu (Tom Epperly)
Subject: gcc 2.3.1 looses compiling ghostscript 2.5.2 on a DECstation 3100
Organization: GNUs Not Usenet
Distribution: gnu
Date: Fri, 20 Nov 1992 10:12:20 GMT

I have gcc 2.3.1 compiled on a DECstation 3100, Ultrix 4.2.
ghostscript 2.5.2 compiles with gcc without giving any warning
messages, but when I try to run it.  I get the following message

> ./gs -DNODISPLAY
Initializing... Unrecoverable error: Unrecoverable error: Unrecoverable error: Unrecoverable error: Unrecoverable error: Unrecoverable error: Unrecoverable error: Unreco

The "Unrecoverable error" keeps repeating as fast as possible.  Ultrix
cc compiles gs 2.5.2 correctly.

I did some hunting with gdb, and the following may be useful.  I can't
be sure because I don't know ghostscript well enough.

(gdb) cont
Continuing.

Breakpoint 64, zstring (op=0x10010ed8) at zstring.c:45
45                      return e_rangecheck;
(gdb) where
#0  zstring (op=0x10010ed8) at zstring.c:45
#1  0x4084e4 in interp (pref=0x7fffbb48, perror_object=0x7fffbb70)
    at interp.c:606
#2  0x406e34 in gs_interpret (pref=0x7fffbb48, user_errors=1, 
    pexit_code=0x7fffbb6c, perror_object=0x7fffbb70) at interp.c:182
#3  0x42980c in gs_run_file (file_name=0x1000427c "gs_init.ps", user_errors=1, 
    pexit_code=0x7fffbb6c, perror_object=0x7fffbb70) at gsmain.c:170
#4  0x429594 in gs_init2 () at gsmain.c:122
#5  0x4004a4 in main (argc=2, argv=0x7fffbbe4) at gs.c:193
(gdb) list
40      zstring(register os_ptr op)
41      {       byte *sbody;
42              uint size;
43              check_type(*op, t_integer);
44              if ( op->value.intval < 0 || (ulong)(op->value.intval) > max_uint )
45                      return e_rangecheck;
46              size = op->value.intval;
47              sbody = (byte *)alloc(size, 1, "string");
48              if ( sbody == 0 ) return e_VMerror;
49              make_tasv(op, t_string, a_all, size, bytes, sbody);
(gdb) print *op
$24 = {tas = {type_attrs = 896, rsize = 1}, value = {intval = 128, 
    index = 128, realval = <invalid float value>, 
    bytes = 0x80<Address 0x80 out of bounds>, 
    const_bytes = 0x80<Address 0x80 out of bounds>, refs = 0x80, 
    const_refs = 0x80, pname = 0x80, const_pname = 0x80, pdict = 0x80, 
    const_pdict = 0x80, packed = 0x80, opproc = 0x80, pfile = 0x80, 
    pfont = 0x80, pcond = 0x80, plock = 0x80, pdevice = 0x80, pgstate = 0x80, 
    psave = 0x80}}
(gdb) print max_unit
No symbol "max_unit" in current context.
// comment from std.h
std.h:#define max_uint ((uint)0xffffffff + (uint)0)
(gdb) print max_uint
No symbol "max_uint" in current context.
(gdb) print (unsigned long)(op->value.intval)
$25 = 128
(gdb) print op->value.intval
$26 = 128
(gdb) print (unsigned long)(op->value.intval) > ((unsigned int)0xffffffff + (un
signed int)0)
$27 = 0
(gdb) where
#0  zstring (op=0x10010ed8) at zstring.c:45
#1  0x4084e4 in interp (pref=0x7fffbb48, perror_object=0x7fffbb70)
    at interp.c:606
#2  0x406e34 in gs_interpret (pref=0x7fffbb48, user_errors=1, 
    pexit_code=0x7fffbb6c, perror_object=0x7fffbb70) at interp.c:182
#3  0x42980c in gs_run_file (file_name=0x1000427c "gs_init.ps", user_errors=1, 
    pexit_code=0x7fffbb6c, perror_object=0x7fffbb70) at gsmain.c:170
#4  0x429594 in gs_init2 () at gsmain.c:122
#5  0x4004a4 in main (argc=2, argv=0x7fffbbe4) at gs.c:193
(gdb) step

Newsgroups: gnu.gcc.bug