[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: (g)as coredumping -- known problem?

> > >   yesterday, I have tried to compile kdelibs-1.1 on a standard
> > > installation of OpenBSD 2.4 wit Qt-1.42. While compiling the
> > > source file addressbook.cc belonging to libkab the assembler
> > > failed with a coredump.
> > >   Anyhow, I have analyzed the error, using the sources of as.It
> > > turned out that this really seems to be problem of as caused by the
> > > long symbols due to type mangling in c++. Is this a known problem?
> >
> >         I'm now in process to port KDE 1.1 to OpenBSD. And yes i noticed
> > the same thing as you. I can't get thought addressbook.cc compilation. I
> > get SIG 11 every time ;-) Soon i'll try to find out what's the problem
> > exactly. Maybe using egcs..
>   The reason for my posting was more or less that I could not believe
> that this is an unknown problem. Before working on my own solution I
> wanted, therefore, ask wether there exists already a solution.

Egcs says this in their FAQ: (at http://egcs.cygnus.com/faq.html#squangle)

How to work around too long C++ symbol names? (-fsquangle)

If the standard assembler of your platform can't cope with the large symbol names that the default g++ name mangling mechanism produces, your best bet is to use GNU as, from the GNU binutils package. 

Unfortunately, GNU as does not support all platforms supported by egcs, so you may have to use an experimental work-around: the -fsquangle option, that enables compression of symbol names. 

Note that this option is still under development, and subject to change. Since it modifies the name mangling mechanism, you'll need to build libstdc++ and any other C++ libraries with this option enabled.
Furthermore, if this option changes its behavior in the future, you'll have to rebuild them all again. :-( 

This option can be enabled by default by initializing `flag_do_squangling' with `1' in `gcc/cp/decl2.c' (it is not initialized by default), then rebuilding egcs and any C++ libraries. 


"Backwards compatible" means: "if it isn't backwards, it's not compatible."