[gnu.gcc.bug] sparc bug

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.