-static void* mm_fake_calloc(size_t nmemb, size_t size) { return NULL; }
-static void* mm_fake_malloc(size_t n) { return NULL; }
-static void* mm_fake_realloc(void *p, size_t s) { return NULL; }
+static void* mm_fake_malloc(size_t n)
+{
+ size_t count = n / sizeof(uint64_t);
+ if (n && 0xff)
+ count ++;
+ if (fake_alloc_index + count < BUFFER_SIZE) {
+ uint64_t* res = buffer + fake_alloc_index;
+ fake_alloc_index += count;
+ return res;
+ }
+ exit(127);
+}
+
+static void* mm_fake_calloc(size_t nmemb, size_t size)
+{
+ // This is fresh .bss data, we don't need to clear it:
+ size_t n = nmemb * size;
+ return mm_fake_malloc(n);
+}
+
+static void* mm_fake_realloc(void *p, size_t s)
+{
+ return mm_fake_malloc(s);
+}
+
+static void mm_fake_free(void *p)
+{
+}