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.