1*0bd9e244Spfg /************************************************************** 2*0bd9e244Spfg * 3*0bd9e244Spfg * Licensed to the Apache Software Foundation (ASF) under one 4*0bd9e244Spfg * or more contributor license agreements. See the NOTICE file 5*0bd9e244Spfg * distributed with this work for additional information 6*0bd9e244Spfg * regarding copyright ownership. The ASF licenses this file 7*0bd9e244Spfg * to you under the Apache License, Version 2.0 (the 8*0bd9e244Spfg * "License"); you may not use this file except in compliance 9*0bd9e244Spfg * with the License. You may obtain a copy of the License at 10*0bd9e244Spfg * 11*0bd9e244Spfg * http://www.apache.org/licenses/LICENSE-2.0 12*0bd9e244Spfg * 13*0bd9e244Spfg * Unless required by applicable law or agreed to in writing, 14*0bd9e244Spfg * software distributed under the License is distributed on an 15*0bd9e244Spfg * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*0bd9e244Spfg * KIND, either express or implied. See the License for the 17*0bd9e244Spfg * specific language governing permissions and limitations 18*0bd9e244Spfg * under the License. 19*0bd9e244Spfg * 20*0bd9e244Spfg *************************************************************/ 21*0bd9e244Spfg 22*0bd9e244Spfg 23*0bd9e244Spfg #ifndef _ARM_SHARE_HXX 24*0bd9e244Spfg #define _ARM_SHARE_HXX 25*0bd9e244Spfg #include "uno/mapping.h" 26*0bd9e244Spfg 27*0bd9e244Spfg #include <typeinfo> 28*0bd9e244Spfg #include <exception> 29*0bd9e244Spfg #include <cstddef> 30*0bd9e244Spfg #include <unwind.h> 31*0bd9e244Spfg 32*0bd9e244Spfg namespace CPPU_CURRENT_NAMESPACE 33*0bd9e244Spfg { 34*0bd9e244Spfg 35*0bd9e244Spfg void dummy_can_throw_anything( char const * ); 36*0bd9e244Spfg 37*0bd9e244Spfg // -- following decl from libstdc++-v3/libsupc++/unwind-cxx.h and unwind.h 38*0bd9e244Spfg 39*0bd9e244Spfg struct __cxa_exception 40*0bd9e244Spfg { 41*0bd9e244Spfg ::std::type_info *exceptionType; 42*0bd9e244Spfg void (*exceptionDestructor)(void *); 43*0bd9e244Spfg 44*0bd9e244Spfg ::std::unexpected_handler unexpectedHandler; 45*0bd9e244Spfg ::std::terminate_handler terminateHandler; 46*0bd9e244Spfg 47*0bd9e244Spfg __cxa_exception *nextException; 48*0bd9e244Spfg 49*0bd9e244Spfg int handlerCount; 50*0bd9e244Spfg #ifdef __ARM_EABI__ 51*0bd9e244Spfg __cxa_exception *nextPropagatingException; 52*0bd9e244Spfg int propagationCount; 53*0bd9e244Spfg #else 54*0bd9e244Spfg int handlerSwitchValue; 55*0bd9e244Spfg const unsigned char *actionRecord; 56*0bd9e244Spfg const unsigned char *languageSpecificData; 57*0bd9e244Spfg void *catchTemp; 58*0bd9e244Spfg void *adjustedPtr; 59*0bd9e244Spfg #endif 60*0bd9e244Spfg _Unwind_Exception unwindHeader; 61*0bd9e244Spfg }; 62*0bd9e244Spfg 63*0bd9e244Spfg extern "C" void *__cxa_allocate_exception( 64*0bd9e244Spfg std::size_t thrown_size ) throw(); 65*0bd9e244Spfg extern "C" void __cxa_throw ( 66*0bd9e244Spfg void *thrown_exception, std::type_info *tinfo, 67*0bd9e244Spfg void (*dest) (void *) ) __attribute__((noreturn)); 68*0bd9e244Spfg 69*0bd9e244Spfg struct __cxa_eh_globals 70*0bd9e244Spfg { 71*0bd9e244Spfg __cxa_exception *caughtExceptions; 72*0bd9e244Spfg unsigned int uncaughtExceptions; 73*0bd9e244Spfg #ifdef __ARM_EABI__ 74*0bd9e244Spfg __cxa_exception *propagatingExceptions; 75*0bd9e244Spfg #endif 76*0bd9e244Spfg }; 77*0bd9e244Spfg extern "C" __cxa_eh_globals *__cxa_get_globals () throw(); 78*0bd9e244Spfg 79*0bd9e244Spfg // ----- 80*0bd9e244Spfg 81*0bd9e244Spfg //==================================================================== 82*0bd9e244Spfg void raiseException( 83*0bd9e244Spfg uno_Any * pUnoExc, uno_Mapping * pUno2Cpp ); 84*0bd9e244Spfg //==================================================================== 85*0bd9e244Spfg void fillUnoException( 86*0bd9e244Spfg __cxa_exception * header, uno_Any *, uno_Mapping * pCpp2Uno ); 87*0bd9e244Spfg } 88*0bd9e244Spfg 89*0bd9e244Spfg namespace arm 90*0bd9e244Spfg { 91*0bd9e244Spfg enum armlimits { MAX_GPR_REGS = 4 }; 92*0bd9e244Spfg bool return_in_hidden_param( typelib_TypeDescriptionReference *pTypeRef ); 93*0bd9e244Spfg } 94*0bd9e244Spfg 95*0bd9e244Spfg #endif 96*0bd9e244Spfg /* vi:set tabstop=4 shiftwidth=4 expandtab: */ 97