]> AND Public Git Repository - simgrid.git/blobdiff - src/xbt/mmalloc/mm_legacy.c
Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
When mmap-ing, ensute that offset is set to 0 if anon mmap
[simgrid.git] / src / xbt / mmalloc / mm_legacy.c
index c9644fc3dc0b00ec1e5a5ef3aa2c16543b1fd4b7..790ead6c56d1325933e35f43bd9f982879ef0868 100644 (file)
@@ -51,7 +51,7 @@ xbt_mheap_t mmalloc_set_current_heap(xbt_mheap_t new_heap)
 }
 
 /* Override the malloc-like functions if MC is activated at compile time */
-#ifdef HAVE_MC 
+#if HAVE_MC
 
 /* ***** Temporary allocator
  *
@@ -123,10 +123,17 @@ static void __attribute__((constructor(101))) mm_legacy_constructor()
   if (__malloc_use_mmalloc) {
     __mmalloc_current_heap = mmalloc_preinit();
   } else {
+#if HAVE_DLFUNC
+    mm_real_realloc  = (void *(*)(void *, size_t))dlfunc(RTLD_NEXT, "realloc");
+    mm_real_malloc   = (void *(*)(size_t))dlfunc(RTLD_NEXT, "malloc");
+    mm_real_free     = (void (*)(void *))dlfunc(RTLD_NEXT, "free");
+    mm_real_calloc   = (void *(*)(size_t, size_t))dlfunc(RTLD_NEXT, "calloc");
+#else
     mm_real_realloc  = dlsym(RTLD_NEXT, "realloc");
     mm_real_malloc   = dlsym(RTLD_NEXT, "malloc");
     mm_real_free     = dlsym(RTLD_NEXT, "free");
     mm_real_calloc   = dlsym(RTLD_NEXT, "calloc");
+#endif
   }
   mm_initializing = 0;
   mm_initialized = 1;