/elec/propeller-clock

To get this branch, use:
bzr branch http://bzr.ed.am/elec/propeller-clock
57 by edam
added ulibc
1
/*	Copyright (C) 2006 Garrett A. Kajmowicz
2
3
	This file is part of the uClibc++ Library.
4
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
8
	of the License.
9
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.
14
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
18
*/
19
20
#include <cstdlib>
21
#include <cstring>
22
#include <func_exception>
23
24
//This is a system-specific header which does all of the error-handling management
25
#include <unwind-cxx.h>
26
27
namespace __cxxabiv1{
28
29
extern "C" void * __cxa_allocate_exception(std::size_t thrown_size) throw(){
30
	void *retval;
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));
34
	if (0 == retval){
35
		std::terminate();
36
	}
37
	memset (retval, 0, sizeof(__cxa_exception));
38
	return (void *)((unsigned char *)retval + sizeof(__cxa_exception));
39
}
40
41
extern "C" void __cxa_free_exception(void *vptr) throw(){
42
	free( (char *)(vptr) - sizeof(__cxa_exception) );
43
}
44
45
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)));
51
	if (0 == retval){
52
		std::terminate();
53
	}
54
	memset (retval, 0, sizeof(__cxa_dependent_exception));
55
	return retval;
56
}
57
58
extern "C" void __cxa_free_dependent_exception(__cxa_dependent_exception *vptr) throw(){
59
	free( (char *)(vptr) );
60
}
61
}