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' |\ sed '/^\#include <\.\.\.> search starts here:/,/^End of search list/!d' |\
grep "c++") 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 # 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) # Symbols we wrap (see unwind.cc)
# #
EH_SYMBOLS = _Unwind_Resume EH_SYMBOLS = _Unwind_Resume _Unwind_Complete _Unwind_DeleteException
# #
# Additional functions for ARM # Additional functions for ARM

View File

@ -30,6 +30,10 @@ extern "C" {
void __cxx__Unwind_Resume(void *exc) { void __cxx__Unwind_Resume(void *exc) {
_cxx__Unwind_Resume(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 */ /* Special ARM-EABI personality functions */
#ifdef __ARM_EABI__ #ifdef __ARM_EABI__
@ -41,5 +45,9 @@ extern "C" {
int __cxx___aeabi_unwind_cpp_pr1(int state, void *block, void *context) { int __cxx___aeabi_unwind_cpp_pr1(int state, void *block, void *context) {
return _cxx___aeabi_unwind_cpp_pr1(state, block, 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 #endif
} }

View File

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