libstdc++
|
00001 // ABI Support -*- C++ -*- 00002 00003 // Copyright (C) 2016-2017 Free Software Foundation, Inc. 00004 // 00005 // This file is part of GCC. 00006 // 00007 // GCC is free software; you can redistribute it and/or modify 00008 // it under the terms of the GNU General Public License as published by 00009 // the Free Software Foundation; either version 3, or (at your option) 00010 // any later version. 00011 // 00012 // GCC is distributed in the hope that it will be useful, 00013 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 // GNU General Public License for more details. 00016 // 00017 // Under Section 7 of GPL version 3, you are granted additional 00018 // permissions described in the GCC Runtime Library Exception, version 00019 // 3.1, as published by the Free Software Foundation. 00020 00021 // You should have received a copy of the GNU General Public License and 00022 // a copy of the GCC Runtime Library Exception along with this program; 00023 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 00024 // <http://www.gnu.org/licenses/>. 00025 00026 /** @file bits/cxxabi_init_exception.h 00027 * This is an internal header file, included by other library headers. 00028 * Do not attempt to use it directly. 00029 */ 00030 00031 #ifndef _CXXABI_INIT_EXCEPTION_H 00032 #define _CXXABI_INIT_EXCEPTION_H 1 00033 00034 #pragma GCC system_header 00035 00036 #pragma GCC visibility push(default) 00037 00038 #include <stddef.h> 00039 #include <bits/c++config.h> 00040 00041 #ifndef _GLIBCXX_CDTOR_CALLABI 00042 #define _GLIBCXX_CDTOR_CALLABI 00043 #define _GLIBCXX_HAVE_CDTOR_CALLABI 0 00044 #else 00045 #define _GLIBCXX_HAVE_CDTOR_CALLABI 1 00046 #endif 00047 00048 #ifdef __cplusplus 00049 00050 namespace std 00051 { 00052 class type_info; 00053 } 00054 00055 namespace __cxxabiv1 00056 { 00057 struct __cxa_refcounted_exception; 00058 00059 extern "C" 00060 { 00061 // Allocate memory for the primary exception plus the thrown object. 00062 void* 00063 __cxa_allocate_exception(size_t) _GLIBCXX_NOTHROW; 00064 00065 // Initialize exception (this is a GNU extension) 00066 __cxa_refcounted_exception* 00067 __cxa_init_primary_exception(void *object, std::type_info *tinfo, 00068 void (_GLIBCXX_CDTOR_CALLABI *dest) (void *)) _GLIBCXX_NOTHROW; 00069 00070 } 00071 } // namespace __cxxabiv1 00072 00073 #endif 00074 00075 #pragma GCC visibility pop 00076 00077 #endif // _CXXABI_INIT_EXCEPTION_H