This is the mail archive of the gcc-patches@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]

as: error 7403: undefined label - _ZTVN10__cxxabiv120__si_class_type_infoE [was Re: fix execute/20010518-2.c]


> On Fri, Aug 24, 2001 at 01:55:41AM -0400, John David Anglin wrote:
> > New problem: HP as doesn't like undefined symbols without corresponding
> > .IMPORT directive:
> 
> We're probably missing calls to assemble_external in
> output_function_exception_table.

I don't think the problem is in output_function_exception_table.  This
small program demonstrates the problem.

namespace std
{

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

  class bad_typeid : public exception
    {
    public:
      bad_typeid () throw() { }
      virtual ~bad_typeid () throw();
    };

}

extern "C" void __cxa_bad_typeid ();

extern "C" void
__cxa_bad_typeid ()
{
  throw std::bad_typeid();
}

In the assembler output from both hppa1.1-hp-hpux10.20 and i686-pc-linux-gnu,
the symbol _ZTVN10__cxxabiv120__si_class_type_infoE is not defined.  However,
GAS doesn't care that there is no .weak or .global statement for it.

A work around is to include <cxxabi.h>.  If this is the correct solution,
then a lot of code needs fixing.

On i686, the symbol looked OK to me after finish_vtable_vardecl.  Still
trying to figure out why assemble_external isn't being called.

Dave
-- 
J. David Anglin                                  dave.anglin@nrc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6605)


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