X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=inline;f=Usermode%2FLibraries%2Flibc%2B%2B.so_src%2Fcxxabi.cc;h=bd35690af4146f4dd554260814b024c8b21feffc;hb=5cab4c07bc13888dc7956194ef9595508072a4eb;hp=adda291c7982acd1cfc976bebbcc9a18a5d4ba2d;hpb=515d24f4080529f45fc94c4522f2a0da3fe98148;p=tpg%2Facess2.git diff --git a/Usermode/Libraries/libc++.so_src/cxxabi.cc b/Usermode/Libraries/libc++.so_src/cxxabi.cc index adda291c..bd35690a 100644 --- a/Usermode/Libraries/libc++.so_src/cxxabi.cc +++ b/Usermode/Libraries/libc++.so_src/cxxabi.cc @@ -4,8 +4,13 @@ * * cxxabi.cc * - C++ ABI Namespace + * + * NOTE: GCC follows the Itanium™ C++ ABI on all platforms + * http://mentorembedded.github.io/cxx-abi/abi.html + * http://libcxxabi.llvm.org/spec.html */ #include +#include namespace __cxxabiv1 { @@ -30,3 +35,28 @@ __vmi_class_type_info::~__vmi_class_type_info() }; // namespace __cxxabiv1 +extern "C" void __cxa_bad_cast () +{ + _SysDebug("__cxa_bad_cast"); + for(;;); + //throw ::std::bad_cast; +} + +extern "C" void __cxa_bad_typeid () +{ + _SysDebug("__cxa_bad_typeid"); + for(;;); + //throw ::std::bad_typeid; +} + +extern "C" void* __dynamic_cast( + const void *sub, + const __cxxabiv1::__class_type_info *src, + const __cxxabiv1::__class_type_info *dst, + ptrdiff_t src2dst_offset + ) +{ + _SysDebug("TODO: __dynamic_cast %p %s to %s, hint=%p", sub, dst->name(), src->name(), src2dst_offset); + return NULL; +} +