Boost logo

Boost :

From: Joerg Walter (jhr.walter_at_[hidden])
Date: 2003-05-18 12:53:59


Hi Guillaume (hi, all),

you wrote:

> I tried Boost with gcc 3.3 (released this week) and it seems the
> configuration for gcc doesn't need to be changed.

[snip]

> I launched the regression suite with this compiler and the results are not
> different from gcc 3.2. Except for uBlas: the whole library seems broken
> with this new version (and according to the message, it wasn't really good
> with gcc 3.2 either). Each test program compilation fails with this error
> message:
>
> error: due to a defect in the G++ 3.2 ABI, G++ has assigned the same
> mangled name to two different types

It looks like the library was OK and the compiler was broken?

Paul Leopardi investigated already(thanks!) and posted on ublas-dev:

<cite>
gcc 3.3 includes a fix to PR 9729, which has to do with name mangling:
From: Mark Mitchell <mark at codesourcery dot com>
Date: Thu, 20 Feb 2003 11:32:05 -0800
Subject: PATCH: "Fix" PR C++/9729
http://gcc.gnu.org/ml/gcc-patches/2003-02/msg01715.html

A related PR is 8006:
From: mmitchel at gcc dot gnu dot org
Date: 4 Oct 2002 05:08:06 -0000
Subject: Re: c++/8006: ice in mangle_conv_op_name_for_type boost regression
http://gcc.gnu.org/ml/gcc-prs/2002-10/msg00135.html

The result of the fix to PR 9729 is that glucat-0.1.2 with Boost 1.30.0 does
not compile with the SuSE prerelease of gcc 3.3. I have uploaded the
compilation output to http://groups.yahoo.com/group/ublas-dev/files/
</cite>

and

<cite>
The workaround for the fix to PR 9729 is:
In Makefile, change
CXXFLAGS = -Wall -ansi -DNDEBUG -g -O1 -finline-limit=400 -fno-check-new
-fexceptions
to
CXXFLAGS = -Wall -ansi -DNDEBUG -g -O1 -finline-limit=400 -fno-check-new
-fexceptions -fabi-version=0

The default ABI version for the SuSE 8.2 prelease of gcc 3.3 is ABI version
1.
info gcc says:

 `-fabi-version=N'
      Use version N of the C++ ABI. Version 1 is the version of the C++
      ABI that first appeared in G++ 3.2. Version 0 will always be the
      version that conforms most closely to the C++ ABI specification.
      Therefore, the ABI obtained using version 0 will change as ABI
      bugs are fixed.

      The default is version 1.
</cite>

I believe I understand the decision for the ABI default, but I'm pretty
unsure how to deal with it.

Thanks,

Joerg


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk