7675eb464d9f79802d61b2fcbff53b9751671036
9 INTERCEPT_PROTOTYPE(void, malloc
, size_t size
)
10 INTERCEPT_TRACE("size %d", size
)
11 INTERCEPT_CALL_ARGS(size
)
14 #define INTERCEPT_FUNC(type, name, args...) \
19 #define INTERCEPT_TRACE(fmt, args...) \
20 #define __I_TRACE_FMT fmt \
21 #define __I_TRACE_ARGS args
23 #define INTERCEPT_CALL_ARGS(args...) \
24 #define __I_CALL_ARGS args
27 __I_FUNC_TYPE __I_FUNC_NAME(__I_FUNC_ARGS) \
29 static __I_FUNC_TYPE (*plibc_ ## __I_FUNC_NAME)(args) = NULL; \
31 if(plibc_ ## __I_FUNC_NAME == NULL) { \
32 plibc_ ## __I_FUNC_NAME = dlsym(RTLD_NEXT, "malloc"); \
33 if(plibc_ ## __I_FUNC_NAME == NULL) { \
34 fprintf(stderr, "mallocwrap: unable to find malloc\n"); \
39 trace_mark(ust, __I_FUNC_NAME, __I_TRACE_FMT, __I_TRACE_ARGS); \
41 return plibc_ ## __I_FUNC_NAME (__I_CALL_ARGS); \
45 void *malloc(size_t size
)
47 static void *(*plibc_malloc
)(size_t size
) = NULL
;
51 if(plibc_malloc
== NULL
) {
52 plibc_malloc
= dlsym(RTLD_NEXT
, "malloc");
53 if(plibc_malloc
== NULL
) {
54 fprintf(stderr
, "mallocwrap: unable to find malloc\n");
59 retval
= plibc_malloc(size
);
61 trace_mark(ust
, malloc
, "size %d ptr %p", (int)size
, retval
);
68 static void *(*plibc_free
)(void *ptr
) = NULL
;
70 if(plibc_free
== NULL
) {
71 plibc_free
= dlsym(RTLD_NEXT
, "free");
72 if(plibc_free
== NULL
) {
73 fprintf(stderr
, "mallocwrap: unable to find free\n");
78 trace_mark(ust
, free
, "%p", ptr
);
80 return plibc_free(ptr
);
This page took 0.054304 seconds and 3 git commands to generate.