$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
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