#include extern "C" void __cxa_pure_virtual() { printk("__cxa_pure_virtual\n"); abort(); } extern "C" void* memcpy(void* dstptr, const void* srcptr, const size_t n) { auto* dst = static_cast(dstptr); const auto* src = static_cast(srcptr); for (size_t i = 0; i < n; ++i) dst[i] = src[i]; return dstptr; } extern "C" void* memset(void* bufptr, const int value, const size_t n) { auto* buf = static_cast(bufptr); for (size_t i = 0; i < n; ++i) buf[i] = static_cast(value); return bufptr; } extern "C" void* memmove(void* dstptr, const void* srcptr, const size_t n) { auto* dst = static_cast(dstptr); const auto* src = static_cast(srcptr); if (dst < src) { for (size_t i = 0; i < n; ++i) dst[i] = src[i]; } else { for (size_t i = n; i != 0; i--) dst[i - 1] = src[i - 1]; } return dstptr; } extern "C" int memcmp(const void* aptr, const void* bptr, const size_t n) { const auto* a = static_cast(aptr); const auto* b = static_cast(bptr); for (size_t i = 0; i < n; ++i) { if (a[i] < b[i]) return -1; else if (b[i] < a[i]) return 1; } return 0; }