1    	// ABI Support -*- C++ -*-
2    	
3    	// Copyright (C) 2016-2017 Free Software Foundation, Inc.
4    	//
5    	// This file is part of GCC.
6    	//
7    	// GCC is free software; you can redistribute it and/or modify
8    	// it under the terms of the GNU General Public License as published by
9    	// the Free Software Foundation; either version 3, or (at your option)
10   	// any later version.
11   	//
12   	// GCC is distributed in the hope that it will be useful,
13   	// but WITHOUT ANY WARRANTY; without even the implied warranty of
14   	// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15   	// GNU General Public License for more details.
16   	//
17   	// Under Section 7 of GPL version 3, you are granted additional
18   	// permissions described in the GCC Runtime Library Exception, version
19   	// 3.1, as published by the Free Software Foundation.
20   	
21   	// You should have received a copy of the GNU General Public License and
22   	// a copy of the GCC Runtime Library Exception along with this program;
23   	// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
24   	// <http://www.gnu.org/licenses/>.
25   	
26   	/** @file bits/cxxabi_init_exception.h
27   	 *  This is an internal header file, included by other library headers.
28   	 *  Do not attempt to use it directly.
29   	 */
30   	
31   	#ifndef _CXXABI_INIT_EXCEPTION_H
32   	#define _CXXABI_INIT_EXCEPTION_H 1
33   	
34   	#pragma GCC system_header
35   	
36   	#pragma GCC visibility push(default)
37   	
38   	#include <stddef.h>
39   	#include <bits/c++config.h>
40   	
41   	#ifndef _GLIBCXX_CDTOR_CALLABI
42   	#define _GLIBCXX_CDTOR_CALLABI
43   	#define _GLIBCXX_HAVE_CDTOR_CALLABI 0
44   	#else
45   	#define _GLIBCXX_HAVE_CDTOR_CALLABI 1
46   	#endif
47   	
48   	#ifdef __cplusplus
49   	
50   	namespace std
51   	{
52   	  class type_info;
53   	}
54   	
55   	namespace __cxxabiv1
56   	{
57   	  struct __cxa_refcounted_exception;
58   	
59   	  extern "C"
60   	    {
61   	      // Allocate memory for the primary exception plus the thrown object.
62   	      void*
63   	      __cxa_allocate_exception(size_t) _GLIBCXX_NOTHROW;
64   	
65   	      void
66   	      __cxa_free_exception(void*) _GLIBCXX_NOTHROW;
67   	
68   	      // Initialize exception (this is a GNU extension)
69   	      __cxa_refcounted_exception*
70   	      __cxa_init_primary_exception(void *object, std::type_info *tinfo,
71   	                void (_GLIBCXX_CDTOR_CALLABI *dest) (void *)) _GLIBCXX_NOTHROW;
72   	
73   	    }
74   	} // namespace __cxxabiv1
75   	
76   	#endif
77   	
78   	#pragma GCC visibility pop
79   	
80   	#endif // _CXXABI_INIT_EXCEPTION_H
81