diff options
Diffstat (limited to 'lib/libcxxabi/src/cxa_exception.hpp')
-rw-r--r-- | lib/libcxxabi/src/cxa_exception.hpp | 120 |
1 files changed, 0 insertions, 120 deletions
diff --git a/lib/libcxxabi/src/cxa_exception.hpp b/lib/libcxxabi/src/cxa_exception.hpp deleted file mode 100644 index 6d98e11a623..00000000000 --- a/lib/libcxxabi/src/cxa_exception.hpp +++ /dev/null @@ -1,120 +0,0 @@ -//===------------------------- cxa_exception.hpp --------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -// -// This file implements the "Exception Handling APIs" -// http://mentorembedded.github.io/cxx-abi/abi-eh.html -// -//===----------------------------------------------------------------------===// - -#ifndef _CXA_EXCEPTION_H -#define _CXA_EXCEPTION_H - -#include <exception> // for std::unexpected_handler and std::terminate_handler -#include "cxxabi.h" -#include "unwind.h" - -namespace __cxxabiv1 { - -static const uint64_t kOurExceptionClass = 0x434C4E47432B2B00; // CLNGC++\0 -static const uint64_t kOurDependentExceptionClass = 0x434C4E47432B2B01; // CLNGC++\1 -static const uint64_t get_vendor_and_language = 0xFFFFFFFFFFFFFF00; // mask for CLNGC++ - -uint64_t __getExceptionClass (const _Unwind_Exception*); -void __setExceptionClass ( _Unwind_Exception*, uint64_t); -bool __isOurExceptionClass(const _Unwind_Exception*); - -struct _LIBCXXABI_HIDDEN __cxa_exception { -#if defined(__LP64__) || defined(_LIBCXXABI_ARM_EHABI) - // This is a new field to support C++ 0x exception_ptr. - // For binary compatibility it is at the start of this - // struct which is prepended to the object thrown in - // __cxa_allocate_exception. - size_t referenceCount; -#endif - - // Manage the exception object itself. - std::type_info *exceptionType; - void (*exceptionDestructor)(void *); - std::unexpected_handler unexpectedHandler; - std::terminate_handler terminateHandler; - - __cxa_exception *nextException; - - int handlerCount; - -#if defined(_LIBCXXABI_ARM_EHABI) - __cxa_exception* nextPropagatingException; - int propagationCount; -#else - int handlerSwitchValue; - const unsigned char *actionRecord; - const unsigned char *languageSpecificData; - void *catchTemp; - void *adjustedPtr; -#endif - -#if !defined(__LP64__) && !defined(_LIBCXXABI_ARM_EHABI) - // This is a new field to support C++ 0x exception_ptr. - // For binary compatibility it is placed where the compiler - // previously adding padded to 64-bit align unwindHeader. - size_t referenceCount; -#endif - _Unwind_Exception unwindHeader; -}; - -// http://sourcery.mentor.com/archives/cxx-abi-dev/msg01924.html -// The layout of this structure MUST match the layout of __cxa_exception, with -// primaryException instead of referenceCount. -struct _LIBCXXABI_HIDDEN __cxa_dependent_exception { -#if defined(__LP64__) || defined(_LIBCXXABI_ARM_EHABI) - void* primaryException; -#endif - - std::type_info *exceptionType; - void (*exceptionDestructor)(void *); - std::unexpected_handler unexpectedHandler; - std::terminate_handler terminateHandler; - - __cxa_exception *nextException; - - int handlerCount; - -#if defined(_LIBCXXABI_ARM_EHABI) - __cxa_exception* nextPropagatingException; - int propagationCount; -#else - int handlerSwitchValue; - const unsigned char *actionRecord; - const unsigned char *languageSpecificData; - void * catchTemp; - void *adjustedPtr; -#endif - -#if !defined(__LP64__) && !defined(_LIBCXXABI_ARM_EHABI) - void* primaryException; -#endif - _Unwind_Exception unwindHeader; -}; - -struct _LIBCXXABI_HIDDEN __cxa_eh_globals { - __cxa_exception * caughtExceptions; - unsigned int uncaughtExceptions; -#if defined(_LIBCXXABI_ARM_EHABI) - __cxa_exception* propagatingExceptions; -#endif -}; - -extern "C" _LIBCXXABI_FUNC_VIS __cxa_eh_globals * __cxa_get_globals (); -extern "C" _LIBCXXABI_FUNC_VIS __cxa_eh_globals * __cxa_get_globals_fast (); - -extern "C" _LIBCXXABI_FUNC_VIS void * __cxa_allocate_dependent_exception (); -extern "C" _LIBCXXABI_FUNC_VIS void __cxa_free_dependent_exception (void * dependent_exception); - -} // namespace __cxxabiv1 - -#endif // _CXA_EXCEPTION_H |