http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57699
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- Paolo already patched libstdc++ and there's nothing to fix in eCos. The point is that if I write extern "C" { void f(); } in a libstdc++ header it should mean what the C++ standard says it means. The implicit extern C kluge is for system headers not known to be C++ compatible, but libstdc++ headers are (of course) C++ compatible, so applying the kluge is useless and causes bugs when people try to write valid C++, only to find it has a different meaning on different platforms.