This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

New C++/dwarf-1/optimize bootstrap failure


During the last 10 days, i586-pc-sco3.2v5.0.5 stopped bootstrapping.  It
aborts during the build of tinfo.cc.  The ELF (but dwarf-1) code emits
references to nonexistent assembler labels.  This is a problem that
has reared its head on this target before.  I've reduced tinfo to the
attached y.cc file.  Interestingly, removing the line number info from
the preprocessed file makes the problem go away, too.

If I build it (-O and -g are required to expose the failure) , it returns
$ ./xgcc --save-temps -B./  -c -dA -O -g y.cc
(EOF):undefined name: .L_E140
(EOF):undefined name: .L_E139
(EOF):undefined name: .L_E143
(EOF):undefined name: .L_E142
(EOF):undefined name: .L_E141

All the labels appear in the line after AT_abstract_origin and the
occurrence in the dwarf thingy is the only reference to that symbol.
For example, the first two look appear consecutively in the source like
this:

.L_D82:
        .4byte  .L_D82_e-.L_D82
        .2byte  0x1d    / TAG_inlined_subroutine
        .2byte  0x12    / AT_sibling
        .4byte  .L_D86
        .2byte  0x2b2   / AT_abstract_origin
        .4byte  .L_E139                                   / The first bad one
        .2byte  0x111   / AT_low_pc
        .4byte  .L_B12
        .2byte  0x121   / AT_high_pc
        .4byte  .L_B12_e
.L_D82_e:
.L_D87:
        .4byte  .L_D87_e-.L_D87
        .2byte  0x5     / TAG_formal_parameter
        .2byte  0x12    / AT_sibling
        .4byte  .L_D88
        .2byte  0x2b2   / AT_abstract_origin
        .4byte  .L_E140                                   / The next bad one
        .2byte  0x23    / AT_location
        .2byte  .L_l87_e-.L_l87
.L_l87:
.L_l87_e:


If there is more information I can provide to help track this down,  please
let me know.

Thanx,
RJL


#pragma implementation "typeinfo"


typedef int ptrdiff_t;
typedef unsigned int size_t;
typedef unsigned int  wint_t;

# 1 "include/typeinfo" 1 3
 
#pragma interface "typeinfo"

# 1 "include/exception" 1 3
#pragma interface "exception"

extern "C++" {

namespace std {

class exception {
public:
  exception () { }
  virtual ~exception () { }
  virtual const char* what () const;
};

class bad_exception : public exception {
public:
  bad_exception () { }
  virtual ~bad_exception () { }
};

typedef void (*terminate_handler) ();
typedef void (*unexpected_handler) ();

terminate_handler set_terminate (terminate_handler);
void terminate () __attribute__ ((__noreturn__));
unexpected_handler set_unexpected (unexpected_handler);
void unexpected () __attribute__ ((__noreturn__));
bool uncaught_exception ();

}  

}  

# 9 "include/typeinfo" 2 3

extern "C++" {

namespace std {

class type_info {
private:
   
  type_info& operator= (const type_info&);
  type_info (const type_info&);

protected:
  explicit type_info (const char *n): _name (n) { }

  const char *_name;

public:
   
  virtual ~type_info ();
    
  bool before (const type_info& arg) const;
  const char* name () const
    { return _name; }
  bool operator== (const type_info& arg) const;
  bool operator!= (const type_info& arg) const;
};

inline bool type_info::
operator!= (const type_info& arg) const
{
  return !operator== (arg);
}

class bad_cast : public exception {
public:
  bad_cast() { }
  virtual ~bad_cast() { }
};

}  

}  


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]