1 #ifdef HOOK_ENABLE 2 #include "musl_preinit_common.h" 3 #include "musl_malloc.h" 4 #include <stdatomic.h> 5 #include <malloc.h> 6 #include <stdlib.h> 7 8 #ifdef USE_GWP_ASAN 9 extern void* libc_gwp_asan_malloc(size_t bytes); 10 extern void libc_gwp_asan_free(void *mem); 11 extern size_t libc_gwp_asan_malloc_usable_size(void *mem); 12 extern void* libc_gwp_asan_realloc(void *ptr, size_t size); 13 extern void* libc_gwp_asan_calloc(size_t nmemb, size_t size); 14 #endif 15 16 struct musl_libc_globals __musl_libc_globals; 17 #ifdef USE_GWP_ASAN 18 struct MallocDispatchType __libc_malloc_default_dispatch = { 19 .malloc = libc_gwp_asan_malloc, 20 .free = libc_gwp_asan_free, 21 .mmap = MuslMalloc(mmap), 22 .munmap = MuslMalloc(munmap), 23 .calloc = libc_gwp_asan_calloc, 24 .realloc = libc_gwp_asan_realloc, 25 .malloc_usable_size = libc_gwp_asan_malloc_usable_size, 26 .prctl = MuslMalloc(prctl), 27 .aligned_alloc = MuslMalloc(aligned_alloc), 28 }; 29 #else 30 struct MallocDispatchType __libc_malloc_default_dispatch = { 31 .malloc = MuslFunc(malloc), 32 .free = MuslFunc(free), 33 .mmap = MuslMalloc(mmap), 34 .munmap = MuslMalloc(munmap), 35 .calloc = MuslFunc(calloc), 36 .realloc = MuslFunc(realloc), 37 .malloc_usable_size = MuslMalloc(malloc_usable_size), 38 .prctl = MuslMalloc(prctl), 39 .aligned_alloc = MuslMalloc(aligned_alloc), 40 }; 41 #endif 42 43 volatile atomic_bool __hook_enable_hook_flag; 44 volatile atomic_bool __memleak_hook_flag; 45 46 #endif 47