X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=liblttng-ust-dl%2Fustdl.c;fp=liblttng-ust-dl%2Fustdl.c;h=fde537f62f057b94c646bd1af824665d7ed274ec;hb=b145a5cf5484dbef4ab419e112b701ae9fba8ccf;hp=b6abca7b6e13c7562bbb4d1b8fccbcaea64bdf2b;hpb=be0ce77309ad103a0dfc286e793eb9cd55eacde3;p=lttng-ust.git diff --git a/liblttng-ust-dl/ustdl.c b/liblttng-ust-dl/ustdl.c index b6abca7b..fde537f6 100644 --- a/liblttng-ust-dl/ustdl.c +++ b/liblttng-ust-dl/ustdl.c @@ -67,7 +67,7 @@ int _lttng_ust_dl_libc_dlclose(void *handle) } static -void lttng_ust_baddr_push(void *so_base, const char *so_name) +void lttng_ust_baddr_push(void *so_base, const char *so_name, void *ip) { char resolved_path[PATH_MAX]; struct stat sostat; @@ -83,7 +83,7 @@ void lttng_ust_baddr_push(void *so_base, const char *so_name) } tracepoint(ust_baddr, push, - so_base, resolved_path, sostat.st_size, sostat.st_mtime); + so_base, resolved_path, sostat.st_size, sostat.st_mtime, ip); return; } @@ -94,7 +94,8 @@ void *dlopen(const char *filename, int flag) struct link_map *p = NULL; if (dlinfo(handle, RTLD_DI_LINKMAP, &p) != -1 && p != NULL && p->l_addr != 0) - lttng_ust_baddr_push((void *) p->l_addr, p->l_name); + lttng_ust_baddr_push((void *) p->l_addr, p->l_name, + __builtin_return_address(0)); } return handle; } @@ -105,7 +106,8 @@ int dlclose(void *handle) struct link_map *p = NULL; if (dlinfo(handle, RTLD_DI_LINKMAP, &p) != -1 && p != NULL && p->l_addr != 0) - tracepoint(ust_baddr, pop, (void *) p->l_addr); + tracepoint(ust_baddr, pop, (void *) p->l_addr, + __builtin_return_address(0)); } return _lttng_ust_dl_libc_dlclose(handle); }