On Monday 26 November 2007 19:29, Joe Buck wrote: > On Mon, Nov 26, 2007 at 04:02:48PM -0500, Stephane Hockenhull wrote: > > On Monday 26 November 2007 14:01, Daniel Jacobowitz wrote: > > > On Mon, Nov 26, 2007 at 10:40:35AM -0800, Joe Buck wrote: > > > > On Mon, Nov 26, 2007 at 01:33:54PM -0500, Stephane Hockenhull wrote: > > > > > hi, it seem stl templates are not mangled as other classes and > > > > > templates > > > > > > > > > > I was wondering why and where in the g++ source code is that > > > > > special case implemented? > > > > > > > > > > it seem to cause a problem with -fleading-underscore > > > > > > > > AFAIK there is no special case, however there might be a bug lurking > > > > somewhere. Do you have a specific case where -fleading-underscore > > > > messes up? > > > > > > There are a few special cases, e.g. for std::string and > > > std::basic_string; the C++ ABI documents have the details. > > > > > > _ZSi -> std::basic_istream<char, std::char_traits<char> > > > > > those cause problem with -fleading-underscore. > > > > it seem there is more than one data path for the mangling and one of > > those misses adding the extra underscore which cause missing symbols at > > linking. > > Hm. But -fleading-underscore is there to support an old ABI, the one that > BSD Unix used to use, and the _ZSi is for the newer common ABI. Probably > no one tested the interaction, so I don't know what the correct solution > is. > > But why are you using -fleading-underscore?
on the win32 platform all C symbols requires a leading underscore everything works fine until we start using std::string objects, there is a bug with the special case name mangling. http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34166 -- Stephane Hockenhull SSC-Studios.com