Switch to clang and improve cpprt

This commit is contained in:
Justin C. Miller
2018-05-09 01:17:18 -07:00
parent bb227d2c37
commit 9128bfc5f1
9 changed files with 55 additions and 19 deletions

View File

@@ -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");
}