X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=liblttng-ust-dl%2Flttng-ust-dl.c;h=8f2faac00630717ee96bf3fa1e23681075e151ca;hb=38a7bf26121aa474821d215c4d8c583be531d40d;hp=d6b807149861415e30212a5ca72100dfef8db4c7;hpb=8e2aed3f18adc14ec586ef717e396bcac4473dd7;p=lttng-ust.git diff --git a/liblttng-ust-dl/lttng-ust-dl.c b/liblttng-ust-dl/lttng-ust-dl.c index d6b80714..8f2faac0 100644 --- a/liblttng-ust-dl/lttng-ust-dl.c +++ b/liblttng-ust-dl/lttng-ust-dl.c @@ -27,6 +27,7 @@ #include #include +#include #include "usterr-signal-safe.h" /* Include link.h last else it conflicts with ust-dlfcn. */ @@ -70,9 +71,9 @@ void lttng_ust_dl_dlopen(void *so_base, const char *so_name, void *ip) char resolved_path[PATH_MAX]; struct lttng_ust_elf *elf; uint64_t memsz; - uint8_t *build_id; + uint8_t *build_id = NULL; size_t build_id_len; - char *dbg_file; + char *dbg_file = NULL; uint32_t crc; int has_build_id = 0, has_debug_link = 0; int ret; @@ -104,21 +105,22 @@ void lttng_ust_dl_dlopen(void *so_base, const char *so_name, void *ip) } tracepoint(lttng_ust_dl, dlopen, - ip, so_base, resolved_path, memsz); + ip, so_base, resolved_path, memsz, + has_build_id, has_debug_link); if (has_build_id) { tracepoint(lttng_ust_dl, build_id, ip, so_base, build_id, build_id_len); - free(build_id); } if (has_debug_link) { tracepoint(lttng_ust_dl, debug_link, ip, so_base, dbg_file, crc); - free(dbg_file); } end: + free(dbg_file); + free(build_id); lttng_ust_elf_destroy(elf); return; } @@ -135,7 +137,7 @@ void *dlopen(const char *filename, int flag) ret = dlinfo(handle, RTLD_DI_LINKMAP, &p); if (ret != -1 && p != NULL && p->l_addr != 0) { lttng_ust_dl_dlopen((void *) p->l_addr, p->l_name, - __builtin_return_address(0)); + LTTNG_UST_CALLER_IP()); } } @@ -144,14 +146,14 @@ void *dlopen(const char *filename, int flag) int dlclose(void *handle) { - if (__tracepoint_ptrs_registered && handle) { + if (__tracepoint_ptrs_registered) { struct link_map *p = NULL; int ret; ret = dlinfo(handle, RTLD_DI_LINKMAP, &p); if (ret != -1 && p != NULL && p->l_addr != 0) { tracepoint(lttng_ust_dl, dlclose, - __builtin_return_address(0), + LTTNG_UST_CALLER_IP(), (void *) p->l_addr); } }