aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test-runner.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-runner.c')
-rw-r--r--tests/test-runner.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/tests/test-runner.c b/tests/test-runner.c
index 5e8ec95..63ce384 100644
--- a/tests/test-runner.c
+++ b/tests/test-runner.c
@@ -37,6 +37,7 @@ static int num_alloc;
static void* (*sys_malloc)(size_t);
static void (*sys_free)(void*);
static void* (*sys_realloc)(void*, size_t);
+static void* (*sys_calloc)(size_t, size_t);
extern const struct test __start_test_section, __stop_test_section;
@@ -63,6 +64,17 @@ realloc(void* mem, size_t size)
return sys_realloc(mem, size);
}
+__attribute__ ((visibility("default"))) void *
+calloc(size_t nmemb, size_t size)
+{
+ if (sys_calloc == NULL)
+ return NULL;
+
+ num_alloc++;
+
+ return sys_calloc(nmemb, size);
+}
+
static const struct test *
find_test(const char *name)
{
@@ -96,6 +108,7 @@ int main(int argc, char *argv[])
siginfo_t info;
/* Load system malloc, free, and realloc */
+ sys_calloc = dlsym(RTLD_NEXT, "calloc");
sys_realloc = dlsym(RTLD_NEXT, "realloc");
sys_malloc = dlsym(RTLD_NEXT, "malloc");
sys_free = dlsym(RTLD_NEXT, "free");