1
/* Copyright (C) 2006 Garrett A. Kajmowicz
3
This file is part of the uClibc++ Library.
5
This library is free software; you can redistribute it and/or
6
modify it under the terms of the GNU Lesser General Public
7
License as published by the Free Software Foundation, version 2.1
10
This library is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
Lesser General Public License for more details.
15
You should have received a copy of the GNU Lesser General Public
16
License along with this library; if not, write to the Free Software
17
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22
#include <func_exception>
24
//This is a system-specific header which does all of the error-handling management
25
#include <unwind-cxx.h>
29
extern "C" void * __cxa_allocate_exception(std::size_t thrown_size) throw(){
31
//The sizeof crap is required by Itanium ABI because we need to provide space for
32
//accounting information which is implementaion (gcc) specified
33
retval = malloc (thrown_size + sizeof(__cxa_exception));
37
memset (retval, 0, sizeof(__cxa_exception));
38
return (void *)((unsigned char *)retval + sizeof(__cxa_exception));
41
extern "C" void __cxa_free_exception(void *vptr) throw(){
42
free( (char *)(vptr) - sizeof(__cxa_exception) );
46
extern "C" __cxa_dependent_exception * __cxa_allocate_dependent_exception() throw(){
47
__cxa_dependent_exception *retval;
48
//The sizeof crap is required by Itanium ABI because we need to provide space for
49
//accounting information which is implementaion (gcc) specified
50
retval = static_cast<__cxa_dependent_exception*>(malloc (sizeof(__cxa_dependent_exception)));
54
memset (retval, 0, sizeof(__cxa_dependent_exception));
58
extern "C" void __cxa_free_dependent_exception(__cxa_dependent_exception *vptr) throw(){
59
free( (char *)(vptr) );