Switch to clang and improve cpprt
This commit is contained in:
@@ -1,3 +1,37 @@
|
||||
#include "kutil/assert.h"
|
||||
|
||||
using __exit_func = void (*)(void *);
|
||||
|
||||
extern "C" {
|
||||
void __cxa_pure_virtual() { while(1); }
|
||||
void *__dso_handle __attribute__ ((__weak__));
|
||||
int __cxa_atexit(__exit_func, void *, void *);
|
||||
void __cxa_pure_virtual();
|
||||
}
|
||||
|
||||
|
||||
struct __exit_func_entry
|
||||
{
|
||||
__exit_func func;
|
||||
void *obj;
|
||||
void *dso;
|
||||
};
|
||||
|
||||
static int __num_exit_funcs = 0;
|
||||
static const int __max_exit_funcs = 64;
|
||||
__exit_func_entry __exit_funcs[__max_exit_funcs];
|
||||
|
||||
int
|
||||
__cxa_atexit(__exit_func f, void *o, void *dso)
|
||||
{
|
||||
int i = __num_exit_funcs++;
|
||||
if (i >= __max_exit_funcs) return -1;
|
||||
__exit_funcs[i].func = f;
|
||||
__exit_funcs[i].obj = o;
|
||||
__exit_funcs[i].dso = dso;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void __cxa_pure_virtual()
|
||||
{
|
||||
kassert(0, "Pure virtual function call");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user