diff --git a/base/src/base/cxx/misc.cc b/base/src/base/cxx/misc.cc index 2f9603a5ea..680bb38572 100644 --- a/base/src/base/cxx/misc.cc +++ b/base/src/base/cxx/misc.cc @@ -47,6 +47,18 @@ extern "C" int __cxa_atexit(void(*func)(void*), void *arg, } +/** + * Prototype for finalize support function provided by '_main.cc' + */ +extern int genode___cxa_finalize(void *dso); + + +extern "C" void __cxa_finalize(void *dso) +{ + genode___cxa_finalize(dso); +} + + /*********************************** ** Support required for ARM EABI ** ***********************************/ diff --git a/base/src/platform/_main.cc b/base/src/platform/_main.cc index 7ff308ee61..7a8d9da46c 100644 --- a/base/src/platform/_main.cc +++ b/base/src/platform/_main.cc @@ -170,6 +170,8 @@ void genode___cxa_finalize(void *dso) } +extern "C" void __cxa_finalize(void *dso); + /** * Terminate the process. */ @@ -192,7 +194,7 @@ void genode_exit(int status) for (func = &_dtors_start; func != &_dtors_end; (*func++)()); /* call all handlers registered with atexit() or __cxa_atexit() */ - genode___cxa_finalize(0); + __cxa_finalize(0); /* * Wait for destruction by the parent who was supposed to be notified by