http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49561

foom at fuhm dot net changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |foom at fuhm dot net

--- Comment #8 from foom at fuhm dot net 2011-10-07 01:26:28 UTC ---
This change seems like it might be the first major incompatibility added to
gcc's c++0x mode (at least, things appeared to work before, maybe that was just
luck).

I guess it will now be dangerous to even load a shared lib compiled with
--std=c++0x into the same executable as C++ code compiled in the default c++03
mode, because of the potential for the exported weak symbols from out-of-line
std::list functions compiled for one layout to be used on a structure defined
with the other layout in the other shared object. Even when no c++ objects are
ever passed from one shared lib to the other.

This seems like a particularly bad failure mode to have, especially considering
also bug 36022 (invalid), since it's by design difficult to *not* export the
symbols even if you try.

I understand that the versioned namespaces feature is supposed to help with
this sort of issue; is there any plan to use it to give the c++0x std::list
object a different mangled name than the c++03 std::list object?

Reply via email to