Add missing unwind code to cxx lib

This patch adds support for the '_Unwind_Complete()' and
'_Unwind_DeleteException()' functions in the cxx lib.

Fixes #275.
This commit is contained in:
Christian Prochaska 2012-07-10 23:03:48 +02:00 committed by Norman Feske
parent 5f33704155
commit e5bf7828d9
4 changed files with 15 additions and 2 deletions

View File

@ -15,6 +15,9 @@ INC_DIR += $(shell echo "int main() {return 0;}" |\
sed '/^\#include <\.\.\.> search starts here:/,/^End of search list/!d' |\
grep "c++")
# avoid multiple definition of type _mbstate_t
CC_CXX_OPT += -D_GLIBCXX_HAVE_MBSTATE_T
#
# Link libstdc++ that comes with the tool chain
#

View File

@ -15,7 +15,7 @@ LIBC_SYMBOLS += malloc free calloc realloc \
#
# Symbols we wrap (see unwind.cc)
#
EH_SYMBOLS = _Unwind_Resume
EH_SYMBOLS = _Unwind_Resume _Unwind_Complete _Unwind_DeleteException
#
# Additional functions for ARM

View File

@ -27,9 +27,13 @@ extern "C" {
/* Unwind function found in all binaries */
void _cxx__Unwind_Resume(void *exc) __attribute__((weak));
void __cxx__Unwind_Resume(void *exc) {
void __cxx__Unwind_Resume(void *exc) {
_cxx__Unwind_Resume(exc); }
void _cxx__Unwind_DeleteException(void *exc) __attribute__((weak));
void __cxx__Unwind_DeleteException(void *exc) {
_cxx__Unwind_DeleteException(exc); }
/* Special ARM-EABI personality functions */
#ifdef __ARM_EABI__
@ -41,5 +45,9 @@ extern "C" {
int __cxx___aeabi_unwind_cpp_pr1(int state, void *block, void *context) {
return _cxx___aeabi_unwind_cpp_pr1(state, block, context); }
/* Unwind functions found in some binaries */
void _cxx__Unwind_Complete(void *exc) __attribute__((weak));
void __cxx__Unwind_Complete(void *exc) {
_cxx__Unwind_Complete(exc); }
#endif
}

View File

@ -54,6 +54,8 @@
/* x86 */
__cxa*;
_Unwind_Complete;
_Unwind_DeleteException;
_Unwind_Resume;
__gxx_personality_v0;