Prior to version 11 I wrote a couple of small frameworks using pure virtuals. In order for this to work I had to define:
extern "C" void __cxa_pure_virtual();
Just upgraded to version 11, and found that __cxa_pure_virtual is now declared for me. Trouble is, it is declared WRONG, without the extern "C". The compiler complains because the declarations don't match. If I remove the 'extern "C"', then the reference is not found by the linker and that dies.
I've worked around it by defining the library CppStubs and moving my definition of __cxa_pure_virtual (and delete) into there. Probably a better place for it anyhow.
But you might want to fix the declaration of __cxa_pure_virtual.