diff -r 000000000000 -r 96e5fb8b040d kernel/eka/compsupp/rvct2_2/drtaeabi.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kernel/eka/compsupp/rvct2_2/drtaeabi.cpp Thu Dec 17 09:24:54 2009 +0200 @@ -0,0 +1,419 @@ +/* +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + + +extern char * _ZTVN10__cxxabiv123__fundamental_type_infoE; +extern const char * const $Sub$$_ZTSv = "v"; + + +// This function is simple a way to get these EXPORT statements into +// the .in file. These symbols will therefore be referenced from +// the export table and so **forced** into the DLL +__asm void __rt_exporter_dummy(void) +{ + EXTERN _ZTVN10__cxxabiv123__fundamental_type_infoE + EXTERN _ZTSv + EXPORT |$Sub$$_ZTIv| +|$Sub$$_ZTIv| + DCD _ZTVN10__cxxabiv123__fundamental_type_infoE + DCD _ZTSv + + AREA |.directive|, READONLY, NOALLOC + + PRESERVE8 + + DCB "##\n" + // Long long functions + DCB "EXPORT __aeabi_lmul\n" + DCB "EXPORT __aeabi_ldivmod\n" + DCB "EXPORT __aeabi_uldivmod\n" + DCB "EXPORT __aeabi_llsl\n" + DCB "EXPORT __aeabi_llsr\n" + DCB "EXPORT __aeabi_lasr\n" + DCB "EXPORT __aeabi_lcmp\n" + DCB "EXPORT __aeabi_ulcmp\n" + + // Integer division functions + DCB "EXPORT __aeabi_idiv\n" + DCB "EXPORT __aeabi_uidiv\n" + + // Integer (32/32 . 32) division functions + DCB "EXPORT __aeabi_idivmod\n" + DCB "EXPORT __aeabi_uidivmod\n" + + // Division by Zero + // SIGFPE not supported on SymbianOS + // Implemented in rtdiv0.cpp + DCB "EXPORT __aeabi_idiv0\n" + DCB "EXPORT __aeabi_ldiv0\n" + + // Unaligned memory access + DCB "EXPORT __aeabi_uread4\n" + DCB "EXPORT __aeabi_uwrite4\n" + DCB "EXPORT __aeabi_uread8\n" + DCB "EXPORT __aeabi_uwrite8\n" + + // Memory copying, clearing, and setting + // we may want to override the toolchain supplied versions of these (or not) + DCB "EXPORT __aeabi_memcpy8\n" + DCB "EXPORT __aeabi_memcpy4\n" + DCB "EXPORT __aeabi_memcpy\n" + DCB "EXPORT __aeabi_memmove8\n" + DCB "EXPORT __aeabi_memmove4\n" + DCB "EXPORT __aeabi_memmove\n" + + DCB "EXPORT __aeabi_memset8\n" + DCB "EXPORT __aeabi_memset4\n" + DCB "EXPORT __aeabi_memset\n" + DCB "EXPORT __aeabi_memclr8\n" + DCB "EXPORT __aeabi_memclr4\n" + DCB "EXPORT __aeabi_memclr\n" + + // C++ helper functions + + // Pure virtual call + DCB "EXPORT __cxa_pure_virtual\n" + + // One-time construction API + DCB "EXPORT __cxa_guard_acquire\n" + DCB "EXPORT __cxa_guard_release\n" + DCB "EXPORT __cxa_guard_abort\n" + + // Construction and destruction of arrays + + // Helper functions defined by the generic C++ ABI + DCB "EXPORT __cxa_vec_new\n" + DCB "EXPORT __cxa_vec_new2\n" + DCB "EXPORT __cxa_vec_new3\n" + DCB "EXPORT __cxa_vec_ctor\n" + DCB "EXPORT __cxa_vec_dtor\n" + DCB "EXPORT __cxa_vec_cleanup\n" + DCB "EXPORT __cxa_vec_delete\n" + DCB "EXPORT __cxa_vec_delete2\n" + DCB "EXPORT __cxa_vec_delete3\n" + DCB "EXPORT __cxa_vec_cctor\n" + + // Helper functions defined by the C++ ABI for the ARM Architecture + DCB "EXPORT __aeabi_vec_ctor_nocookie_nodtor\n" + DCB "EXPORT __aeabi_vec_ctor_cookie_nodtor\n" + DCB "EXPORT __aeabi_vec_cctor_nocookie_nodtor\n" + DCB "EXPORT __aeabi_vec_new_cookie_noctor\n" + DCB "EXPORT __aeabi_vec_new_nocookie\n" + DCB "EXPORT __aeabi_vec_new_cookie_nodtor\n" + DCB "EXPORT __aeabi_vec_new_cookie\n" + DCB "EXPORT __aeabi_vec_dtor\n" + DCB "EXPORT __aeabi_vec_dtor_cookie\n" + DCB "EXPORT __aeabi_vec_delete\n" + DCB "EXPORT __aeabi_vec_delete3\n" + DCB "EXPORT __aeabi_vec_delete3_nodtor\n" + + // Object finalization + // these need SymbianOS specific implementations + // implemented in ucppfini.cpp + // and supplied by usrt.lib +#if 0 + DCB "EXPORT __cxa_atexit\n" + DCB "EXPORT __aeabi_atexit\n" + DCB "EXPORT __cxa_finalize\n" +#endif + +// Exception Support from here. Not needed by system side code. +#ifndef __KERNEL_MODE__ + // Standard (user-visible) C++ exception related functions + DCB "EXPORT _ZSt9terminatev\n" + DCB "EXPORT _ZSt10unexpectedv\n" + DCB "EXPORT _ZSt18uncaught_exceptionv\n" + DCB "EXPORT _ZSt13set_terminatePFvvE\n" + DCB "EXPORT _ZSt14set_unexpectedPFvvE\n" + + DCB "EXPORT abort\n" + + // Exception-handling support + DCB "EXPORT __cxa_allocate_exception\n" + DCB "EXPORT __cxa_free_exception\n" + DCB "EXPORT __cxa_throw\n" + DCB "EXPORT __cxa_rethrow\n" + DCB "EXPORT __cxa_begin_catch\n" + DCB "EXPORT __cxa_end_catch\n" + DCB "EXPORT __cxa_end_cleanup\n" + + // personality routines for ARM compact EH entries + DCB "EXPORT __aeabi_unwind_cpp_pr0\n" + DCB "EXPORT __aeabi_unwind_cpp_pr1\n" + DCB "EXPORT __aeabi_unwind_cpp_pr2\n" + + // Unwinder helper routines + DCB "EXPORT _Unwind_VRS_Get\n" + DCB "EXPORT _Unwind_VRS_Set\n" + DCB "EXPORT _Unwind_VRS_Pop\n" + + // personality routine helper functions + DCB "EXPORT __cxa_begin_cleanup\n" + + // this needs SymbianOS specific implementation + DCB "EXPORT __cxa_type_match\n" + + // this needs SymbianOS specific implementation + DCB "EXPORT __cxa_call_terminate\n" + + DCB "EXPORT __cxa_call_unexpected\n" + + // Miscellaneous error handling related to exception processing + DCB "EXPORT __cxa_bad_cast\n" + DCB "EXPORT __cxa_bad_typeid\n" + + + // this needs SymbianOS specific implementation + DCB "EXPORT __cxa_get_globals\n" + + // this needs SymbianOS specific implementation + DCB "EXPORT __cxa_current_exception_type\n" + + + // rtti support from rtti.o + DCB "EXPORT __dynamic_cast\n" + DCB "EXPORT __get_typeid\n" + DCB "EXPORT __ARM_get_typeid\n" + + // Standard typeinfo + DCB "EXPORT _ZNSt9type_infoD1Ev\n" + DCB "EXPORT _ZNSt9type_infoD2Ev\n" + DCB "EXPORT _ZNSt9type_infoD0Ev\n" + DCB "EXPORT _ZNKSt9type_info4nameEv\n" + DCB "EXPORT _ZNKSt9type_infoeqERKS_\n" + DCB "EXPORT _ZNKSt9type_infoneERKS_\n" + DCB "EXPORT _ZNKSt9type_info6beforeERKS_\n" + DCB "EXPORT _ZNSt8bad_castC1Ev\n" + DCB "EXPORT _ZNSt8bad_castC2Ev\n" + DCB "EXPORT _ZNSt8bad_castC1ERKS_\n" + DCB "EXPORT _ZNSt8bad_castC2ERKS_\n" + DCB "EXPORT _ZNSt8bad_castaSERKS_\n" + DCB "EXPORT _ZNSt8bad_castD1Ev\n" + DCB "EXPORT _ZNSt8bad_castD2Ev\n" + DCB "EXPORT _ZNSt8bad_castD0Ev\n" + DCB "EXPORT _ZNKSt8bad_cast4whatEv\n" + DCB "EXPORT _ZNSt10bad_typeidC1Ev\n" + DCB "EXPORT _ZNSt10bad_typeidC2Ev\n" + DCB "EXPORT _ZNSt10bad_typeidC1ERKS_\n" + DCB "EXPORT _ZNSt10bad_typeidC2ERKS_\n" + DCB "EXPORT _ZNSt10bad_typeidaSERKS_\n" + DCB "EXPORT _ZNSt10bad_typeidD1Ev\n" + DCB "EXPORT _ZNSt10bad_typeidD2Ev\n" + DCB "EXPORT _ZNSt10bad_typeidD0Ev\n" + DCB "EXPORT _ZNKSt10bad_typeid4whatEv\n" + DCB "EXPORT _ZN10__cxxabiv123__fundamental_type_infoD1Ev\n" + DCB "EXPORT _ZN10__cxxabiv123__fundamental_type_infoD2Ev\n" + DCB "EXPORT _ZN10__cxxabiv123__fundamental_type_infoD0Ev\n" + DCB "EXPORT _ZN10__cxxabiv117__array_type_infoD1Ev\n" + DCB "EXPORT _ZN10__cxxabiv117__array_type_infoD2Ev\n" + DCB "EXPORT _ZN10__cxxabiv117__array_type_infoD0Ev\n" + DCB "EXPORT _ZN10__cxxabiv120__function_type_infoD1Ev\n" + DCB "EXPORT _ZN10__cxxabiv120__function_type_infoD2Ev\n" + DCB "EXPORT _ZN10__cxxabiv120__function_type_infoD0Ev\n" + DCB "EXPORT _ZN10__cxxabiv116__enum_type_infoD1Ev\n" + DCB "EXPORT _ZN10__cxxabiv116__enum_type_infoD2Ev\n" + DCB "EXPORT _ZN10__cxxabiv116__enum_type_infoD0Ev\n" + DCB "EXPORT _ZN10__cxxabiv117__class_type_infoD1Ev\n" + DCB "EXPORT _ZN10__cxxabiv117__class_type_infoD2Ev\n" + DCB "EXPORT _ZN10__cxxabiv117__class_type_infoD0Ev\n" + DCB "EXPORT _ZN10__cxxabiv120__si_class_type_infoD1Ev\n" + DCB "EXPORT _ZN10__cxxabiv120__si_class_type_infoD2Ev\n" + DCB "EXPORT _ZN10__cxxabiv120__si_class_type_infoD0Ev\n" + DCB "EXPORT _ZN10__cxxabiv121__vmi_class_type_infoD1Ev\n" + DCB "EXPORT _ZN10__cxxabiv121__vmi_class_type_infoD2Ev\n" + DCB "EXPORT _ZN10__cxxabiv121__vmi_class_type_infoD0Ev\n" + DCB "EXPORT _ZN10__cxxabiv117__pbase_type_infoD1Ev\n" + DCB "EXPORT _ZN10__cxxabiv117__pbase_type_infoD2Ev\n" + DCB "EXPORT _ZN10__cxxabiv117__pbase_type_infoD0Ev\n" + DCB "EXPORT _ZN10__cxxabiv119__pointer_type_infoD1Ev\n" + DCB "EXPORT _ZN10__cxxabiv119__pointer_type_infoD2Ev\n" + DCB "EXPORT _ZN10__cxxabiv119__pointer_type_infoD0Ev\n" + DCB "EXPORT _ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev\n" + DCB "EXPORT _ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev\n" + DCB "EXPORT _ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev\n" + DCB "EXPORT _ZSt21__gen_dummy_typeinfosv\n" + DCB "EXPORT _ZTVSt9type_info\n" + DCB "EXPORT _ZTVSt8bad_cast\n" + DCB "EXPORT _ZTVSt10bad_typeid\n" + DCB "EXPORT _ZTIv\n" + DCB "EXPORT _ZTVN10__cxxabiv123__fundamental_type_infoE\n" + DCB "EXPORT _ZTIPv\n" + DCB "EXPORT _ZTVN10__cxxabiv119__pointer_type_infoE\n" + DCB "EXPORT _ZTIPKv\n" + DCB "EXPORT _ZTIb\n" + DCB "EXPORT _ZTIPb\n" + DCB "EXPORT _ZTIPKb\n" + DCB "EXPORT _ZTIw\n" + DCB "EXPORT _ZTIPw\n" + DCB "EXPORT _ZTIPKw\n" + DCB "EXPORT _ZTIc\n" + DCB "EXPORT _ZTIPc\n" + DCB "EXPORT _ZTIPKc\n" + DCB "EXPORT _ZTIa\n" + DCB "EXPORT _ZTIPa\n" + DCB "EXPORT _ZTIPKa\n" + DCB "EXPORT _ZTIh\n" + DCB "EXPORT _ZTIPh\n" + DCB "EXPORT _ZTIPKh\n" + DCB "EXPORT _ZTIs\n" + DCB "EXPORT _ZTIPs\n" + DCB "EXPORT _ZTIPKs\n" + DCB "EXPORT _ZTIt\n" + DCB "EXPORT _ZTIPt\n" + DCB "EXPORT _ZTIPKt\n" + DCB "EXPORT _ZTIi\n" + DCB "EXPORT _ZTIPi\n" + DCB "EXPORT _ZTIPKi\n" + DCB "EXPORT _ZTIj\n" + DCB "EXPORT _ZTIPj\n" + DCB "EXPORT _ZTIPKj\n" + DCB "EXPORT _ZTIl\n" + DCB "EXPORT _ZTIPl\n" + DCB "EXPORT _ZTIPKl\n" + DCB "EXPORT _ZTIm\n" + DCB "EXPORT _ZTIPm\n" + DCB "EXPORT _ZTIPKm\n" + DCB "EXPORT _ZTIx\n" + DCB "EXPORT _ZTIPx\n" + DCB "EXPORT _ZTIPKx\n" + DCB "EXPORT _ZTIy\n" + DCB "EXPORT _ZTIPy\n" + DCB "EXPORT _ZTIPKy\n" + DCB "EXPORT _ZTIf\n" + DCB "EXPORT _ZTIPf\n" + DCB "EXPORT _ZTIPKf\n" + DCB "EXPORT _ZTId\n" + DCB "EXPORT _ZTIPd\n" + DCB "EXPORT _ZTIPKd\n" + DCB "EXPORT _ZTIe\n" + DCB "EXPORT _ZTIPe\n" + DCB "EXPORT _ZTIPKe\n" + DCB "EXPORT _ZTVN10__cxxabiv117__array_type_infoE\n" + DCB "EXPORT _ZTVN10__cxxabiv120__function_type_infoE\n" + DCB "EXPORT _ZTVN10__cxxabiv116__enum_type_infoE\n" + DCB "EXPORT _ZTVN10__cxxabiv117__class_type_infoE\n" + DCB "EXPORT _ZTVN10__cxxabiv120__si_class_type_infoE\n" + DCB "EXPORT _ZTVN10__cxxabiv121__vmi_class_type_infoE\n" + DCB "EXPORT _ZTVN10__cxxabiv117__pbase_type_infoE\n" + DCB "EXPORT _ZTVN10__cxxabiv129__pointer_to_member_type_infoE\n" + DCB "EXPORT _ZTSv\n" + DCB "EXPORT _ZTSPv\n" + DCB "EXPORT _ZTSPKv\n" + DCB "EXPORT _ZTSb\n" + DCB "EXPORT _ZTSPb\n" + DCB "EXPORT _ZTSPKb\n" + DCB "EXPORT _ZTSw\n" + DCB "EXPORT _ZTSPw\n" + DCB "EXPORT _ZTSPKw\n" + DCB "EXPORT _ZTSc\n" + DCB "EXPORT _ZTSPc\n" + DCB "EXPORT _ZTSPKc\n" + DCB "EXPORT _ZTSa\n" + DCB "EXPORT _ZTSPa\n" + DCB "EXPORT _ZTSPKa\n" + DCB "EXPORT _ZTSh\n" + DCB "EXPORT _ZTSPh\n" + DCB "EXPORT _ZTSPKh\n" + DCB "EXPORT _ZTSs\n" + DCB "EXPORT _ZTSPs\n" + DCB "EXPORT _ZTSPKs\n" + DCB "EXPORT _ZTSt\n" + DCB "EXPORT _ZTSPt\n" + DCB "EXPORT _ZTSPKt\n" + DCB "EXPORT _ZTSi\n" + DCB "EXPORT _ZTSPi\n" + DCB "EXPORT _ZTSPKi\n" + DCB "EXPORT _ZTSj\n" + DCB "EXPORT _ZTSPj\n" + DCB "EXPORT _ZTSPKj\n" + DCB "EXPORT _ZTSl\n" + DCB "EXPORT _ZTSPl\n" + DCB "EXPORT _ZTSPKl\n" + DCB "EXPORT _ZTSm\n" + DCB "EXPORT _ZTSPm\n" + DCB "EXPORT _ZTSPKm\n" + DCB "EXPORT _ZTSx\n" + DCB "EXPORT _ZTSPx\n" + DCB "EXPORT _ZTSPKx\n" + DCB "EXPORT _ZTSy\n" + DCB "EXPORT _ZTSPy\n" + DCB "EXPORT _ZTSPKy\n" + DCB "EXPORT _ZTSf\n" + DCB "EXPORT _ZTSPf\n" + DCB "EXPORT _ZTSPKf\n" + DCB "EXPORT _ZTSd\n" + DCB "EXPORT _ZTSPd\n" + DCB "EXPORT _ZTSPKd\n" + DCB "EXPORT _ZTSe\n" + DCB "EXPORT _ZTSPe\n" + DCB "EXPORT _ZTSPKe\n" + DCB "EXPORT _ZTISt9type_info\n" + DCB "EXPORT _ZTISt8bad_cast\n" + DCB "EXPORT _ZTISt10bad_typeid\n" + DCB "EXPORT _ZTIN10__cxxabiv123__fundamental_type_infoE\n" + DCB "EXPORT _ZTIN10__cxxabiv117__array_type_infoE\n" + DCB "EXPORT _ZTIN10__cxxabiv120__function_type_infoE\n" + DCB "EXPORT _ZTIN10__cxxabiv116__enum_type_infoE\n" + DCB "EXPORT _ZTIN10__cxxabiv117__class_type_infoE\n" + DCB "EXPORT _ZTIN10__cxxabiv120__si_class_type_infoE\n" + DCB "EXPORT _ZTIN10__cxxabiv121__vmi_class_type_infoE\n" + DCB "EXPORT _ZTIN10__cxxabiv117__pbase_type_infoE\n" + DCB "EXPORT _ZTIN10__cxxabiv119__pointer_type_infoE\n" + DCB "EXPORT _ZTIN10__cxxabiv129__pointer_to_member_type_infoE\n" + DCB "EXPORT _ZTSSt9type_info\n" + DCB "EXPORT _ZTSSt8bad_cast\n" + DCB "EXPORT _ZTSSt10bad_typeid\n" + DCB "EXPORT _ZTSN10__cxxabiv123__fundamental_type_infoE\n" + DCB "EXPORT _ZTSN10__cxxabiv117__array_type_infoE\n" + DCB "EXPORT _ZTSN10__cxxabiv120__function_type_infoE\n" + DCB "EXPORT _ZTSN10__cxxabiv116__enum_type_infoE\n" + DCB "EXPORT _ZTSN10__cxxabiv117__class_type_infoE\n" + DCB "EXPORT _ZTSN10__cxxabiv120__si_class_type_infoE\n" + DCB "EXPORT _ZTSN10__cxxabiv121__vmi_class_type_infoE\n" + DCB "EXPORT _ZTSN10__cxxabiv117__pbase_type_infoE\n" + DCB "EXPORT _ZTSN10__cxxabiv119__pointer_type_infoE\n" + DCB "EXPORT _ZTSN10__cxxabiv129__pointer_to_member_type_infoE\n" + +#endif // __KERNEL_MODE__ + +} + +#ifndef __KERNEL_MODE__ + +extern "C" { +IMPORT_C int __rt_raise(int signal, int type); +int raise(int signal) + { + return __rt_raise(signal, 0); + } + +IMPORT_C int __rt_exit(int aReturnCode); +EXPORT_C void abort(int signal) + { + __rt_raise(signal, 1); + __rt_exit(1); + } + +IMPORT_C void* __get_typeid(void*); +EXPORT_C void* __ARM_get_typeid(void* p) + { + return __get_typeid(p); + } + +} + +#endif