schmidt%siam.ics.uci.edu@ORION.CF.UCI.EDU ("Douglas C. Schmidt") (09/20/88)
[sorry if this is double posted, our mail system is acting rather strange lately] Bug Report for GCC: ------------------- Problem : gcc 1.28 gets a fatal signal for the following program, taken from the gdb+ distribution (inflow.c). I would have included the gdb+ output and stack trace, but I stripped the 1.28 compiler of its symbols, and am unable to recompile it due to the mysterious ``bit-rot bug'' with sparc (sorry John ;-)). 1.) Version : gcc 1.28 ----------- 2.) Input Program : ----------------- struct command_line { struct command_line *next; char *line; }; enum language {language_c}; struct blockvector { int nblocks; struct block *block[1159]; }; struct block { int startaddr, endaddr; struct symbol *function; struct block *superblock; int nsyms; struct symbol *sym[1]; }; enum namespace { UNDEF_NAMESPACE, VAR_NAMESPACE, STRUCT_NAMESPACE, LABEL_NAMESPACE, }; enum address_class { LOC_UNDEF, LOC_CONST, LOC_STATIC, LOC_REGISTER, LOC_ARG, LOC_REGPARM, LOC_LOCAL, LOC_TYPEDEF, LOC_LABEL, LOC_BLOCK, LOC_EXTERNAL, LOC_CONST_BYTES }; struct symbol { char *name; enum namespace namespace; enum address_class class; struct type *type; union { long value; struct block *block; char *bytes; } value; }; struct sourcevector { int length; struct source *source[1]; }; struct linetable { int nitems; int item[1]; }; struct source { char *name; struct linetable contents; }; struct symtab { struct symtab *next; struct blockvector *blockvector; struct linetable *linetable; struct typevector *typevector; char *filename; enum free_code {free_nothing, free_contents, free_linetable} free_code; char *free_ptr; int nlines; int *line_charpos; enum language language; char *version; char *compilation; int ldsymoff; char *fullname; }; struct symtab_and_line { struct symtab *symtab; int line; unsigned int pc; unsigned int end; }; struct symtabs_and_lines { struct symtab_and_line *sals; int nelts; }; struct symtab_and_line find_pc_line (); struct symtabs_and_lines decode_line_spec (); struct symtabs_and_lines decode_line_1 (); struct frame_info { unsigned int frame; unsigned int pc; unsigned int next_frame; unsigned int next_next_frame; }; struct frame_saved_regs { unsigned int regs[72 ]; }; struct breakpoint { struct breakpoint *next; int number; unsigned int address; int line_number; struct symtab *symtab; int ignore_count; char inserted; char duplicate; struct command_line *commands; unsigned int frame; struct expression *cond; }; void set_momentary_breakpoint (sal, frame) struct symtab_and_line sal; unsigned int frame; { register struct breakpoint *b; b = set_raw_breakpoint (sal); b->number = -3; b->enable = delete; b->frame = frame; } 3.) Command Used : gcc ---------------- 4.) Files used : -------------- tm.h -> tm-sparc.h md -> sparc.md config.h -> config-sun4.h aux-output.c -> output-sparc.c 5.) Machine(s) used : ------------------- Sun 4 running Sun4.0 6.) Compiler diagnostics : ------------------------ gcc version 1.28 /usr/public/lib/gcc/gcc-cpp -v -I/cl/ua/schmidt/include/ -undef -D__GNU__ -D__ GNUC__ -Dsparc -Dsun -Dunix break-bug.c /tmp/cca04334.cpp GNU CPP version 1.28 /usr/public/lib/gcc/gcc-cc1 /tmp/cca04334.cpp -quiet -dumpbase break-bug.c -ve rsion -o /tmp/cca04334.s break-bug.c:138: warning: assignment of pointer from integer lacks a cast /usr/public/gcc: Program cc1 got fatal signal 10.