#include "internal_libc.h"
+// Private libc API
+extern "C" void *__libc_malloc(__swap::uptr size);
+extern "C" void __libc_free(void *ptr);
+extern "C" void *__libc_calloc(__swap::uptr nmemb, __swap::uptr size);
+extern "C" void *__libc_realloc(void *ptr, __swap::uptr size);
+
+
namespace __swap {
namespace internal {
+void *malloc(uptr size)
+{
+ return __libc_malloc(size);
+}
+
+void free(void *ptr)
+{
+ __libc_free(ptr);
+}
+
+void *calloc(uptr nmemb, uptr size)
+{
+ return __libc_calloc(nmemb, size);
+}
+
+void *realloc(void *ptr, uptr size)
+{
+ return __libc_realloc(ptr, size);
+}
+
void *memcpy(void *dest, const void *src, uptr n) noexcept
{
char *d = (char *)dest;
namespace __swap {
namespace internal {
+// Memory API
+void *malloc(uptr size);
+void free(void *ptr);
+void *calloc(uptr nmemb, uptr size);
+void *realloc(void *ptr, uptr size);
+
+
void *memcpy(void *dest, const void *src, uptr n) noexcept;
int strcmp(const char *s1, const char *s2) noexcept;
int mprotect(void *addr, uptr len, int prot) noexcept;