Skip to content

Commit

Permalink
Remove duplication in hooks X-macro definition
Browse files Browse the repository at this point in the history
Rather than defining the entire list of hooked functions twice, have one
platforms-specific list, and then append it to a base list that's common
across all platforms.

Signed-off-by: Matt Wozniski <mwozniski@bloomberg.net>
  • Loading branch information
godlygeek committed May 6, 2022
1 parent 98b9272 commit 2c83d40
Showing 1 changed file with 22 additions and 31 deletions.
53 changes: 22 additions & 31 deletions src/memray/_memray/hooks.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,41 +18,32 @@
#include "logging.h"

#if defined(__GLIBC__)
# define MEMRAY_HOOKED_FUNCTIONS \
FOR_EACH_HOOKED_FUNCTION(malloc) \
FOR_EACH_HOOKED_FUNCTION(free) \
FOR_EACH_HOOKED_FUNCTION(calloc) \
FOR_EACH_HOOKED_FUNCTION(realloc) \
FOR_EACH_HOOKED_FUNCTION(posix_memalign) \
FOR_EACH_HOOKED_FUNCTION(aligned_alloc) \
FOR_EACH_HOOKED_FUNCTION(memalign) \
FOR_EACH_HOOKED_FUNCTION(valloc) \
# define MEMRAY_PLATFORM_HOOKED_FUNCTIONS \
FOR_EACH_HOOKED_FUNCTION(pvalloc) \
FOR_EACH_HOOKED_FUNCTION(dlopen) \
FOR_EACH_HOOKED_FUNCTION(dlclose) \
FOR_EACH_HOOKED_FUNCTION(mmap) \
FOR_EACH_HOOKED_FUNCTION(mmap64) \
FOR_EACH_HOOKED_FUNCTION(munmap) \
FOR_EACH_HOOKED_FUNCTION(prctl) \
FOR_EACH_HOOKED_FUNCTION(PyGILState_Ensure)
FOR_EACH_HOOKED_FUNCTION(mmap64)
#else
# define MEMRAY_HOOKED_FUNCTIONS \
FOR_EACH_HOOKED_FUNCTION(malloc) \
FOR_EACH_HOOKED_FUNCTION(free) \
FOR_EACH_HOOKED_FUNCTION(calloc) \
FOR_EACH_HOOKED_FUNCTION(realloc) \
FOR_EACH_HOOKED_FUNCTION(posix_memalign) \
FOR_EACH_HOOKED_FUNCTION(aligned_alloc) \
FOR_EACH_HOOKED_FUNCTION(memalign) \
FOR_EACH_HOOKED_FUNCTION(valloc) \
FOR_EACH_HOOKED_FUNCTION(dlopen) \
FOR_EACH_HOOKED_FUNCTION(dlclose) \
FOR_EACH_HOOKED_FUNCTION(mmap) \
FOR_EACH_HOOKED_FUNCTION(munmap) \
FOR_EACH_HOOKED_FUNCTION(prctl) \
FOR_EACH_HOOKED_FUNCTION(PyGILState_Ensure)
# define MEMRAY_PLATFORM_HOOKED_FUNCTIONS
#endif

#define MEMRAY_HOOKED_FUNCTIONS \
FOR_EACH_HOOKED_FUNCTION(malloc) \
FOR_EACH_HOOKED_FUNCTION(free) \
FOR_EACH_HOOKED_FUNCTION(calloc) \
FOR_EACH_HOOKED_FUNCTION(realloc) \
FOR_EACH_HOOKED_FUNCTION(posix_memalign) \
FOR_EACH_HOOKED_FUNCTION(aligned_alloc) \
FOR_EACH_HOOKED_FUNCTION(memalign) \
FOR_EACH_HOOKED_FUNCTION(valloc) \
FOR_EACH_HOOKED_FUNCTION(dlopen) \
FOR_EACH_HOOKED_FUNCTION(dlclose) \
FOR_EACH_HOOKED_FUNCTION(mmap) \
FOR_EACH_HOOKED_FUNCTION(munmap) \
FOR_EACH_HOOKED_FUNCTION(prctl) \
FOR_EACH_HOOKED_FUNCTION(PyGILState_Ensure) \
MEMRAY_PLATFORM_HOOKED_FUNCTIONS

#undef MEMRAY_PLATFORM_HOOKED_FUNCTIONS

namespace memray::hooks {

struct symbol_query
Expand Down

0 comments on commit 2c83d40

Please sign in to comment.