Starting in gcc 11, <cxxabi.h> declares the __cxa_finalize() function to return void, not an int as it was previously. The change has no practical importance (our implementation always returned 0 anyway, there was never any interesting integer to returned). But to get our implementation to compile against both gcc-11 and pre-gcc-11's version of cxxabi.h, we need to hide cxxabi.h's declaration.
Signed-off-by: Nadav Har'El <[email protected]> --- runtime.cc | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/runtime.cc b/runtime.cc index 25ef7ea2..d5b471b4 100644 --- a/runtime.cc +++ b/runtime.cc @@ -11,7 +11,6 @@ #include <cstring> #include <string.h> #include <exception> -#include <cxxabi.h> #include <sys/mman.h> #include <unistd.h> #include <link.h> @@ -62,6 +61,14 @@ #include <pty.h> #include <osv/pid.h> +// cxxabi.h from gcc 10 and earlier used to say that __cxa_finalize returns +// an int, while it should return void (and does so on gcc 11). To allow us +// to define __cxa_finalize with neither gcc 10 or 11 complaining, we need +// to hide the declaration in the header file +#define __cxa_finalize __cxa_finalize_ignore +#include <cxxabi.h> +#undef __cxa_finalize + #define __LC_LAST 13 #define __ALIAS(old, new) \ @@ -169,11 +176,11 @@ int __cxa_atexit(destructor_t destructor, void *arg, void *dso) return 0; } -int __cxa_finalize(void *dso) +void __cxa_finalize(void *dso) { if (!dso || dso == &__dso_handle) { debug("__cxa_finalize() running kernel's destructors not supported\n"); - return 0; + return; } std::vector<std::pair<destructor_t,void*>> my_destructors; WITH_LOCK(destructors_mutex) { @@ -183,7 +190,7 @@ int __cxa_finalize(void *dso) for (auto d : boost::adaptors::reverse(my_destructors)) { d.first(d.second); } - return 0; + return; } } -- 2.31.1 -- You received this message because you are subscribed to the Google Groups "OSv Development" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/osv-dev/20210614062057.1998552-3-nyh%40scylladb.com.
