mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-20 14:13:09 +00:00
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:
parent
5f33704155
commit
e5bf7828d9
@ -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
|
||||||
#
|
#
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -54,6 +54,8 @@
|
|||||||
|
|
||||||
/* x86 */
|
/* x86 */
|
||||||
__cxa*;
|
__cxa*;
|
||||||
|
_Unwind_Complete;
|
||||||
|
_Unwind_DeleteException;
|
||||||
_Unwind_Resume;
|
_Unwind_Resume;
|
||||||
__gxx_personality_v0;
|
__gxx_personality_v0;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user