From 03db42ded43e5aa04ce5e6ca1bd72496b689e608 Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Wed, 10 Jun 2015 13:20:31 +0200 Subject: [PATCH] Fix: liblttng-ust-dl ip context Signed-off-by: Mathieu Desnoyers --- liblttng-ust-dl/lttng-ust-dl.c | 10 ++++++---- liblttng-ust-dl/ust_dl.c | 1 + liblttng-ust-dl/ust_dl.h | 5 +++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/liblttng-ust-dl/lttng-ust-dl.c b/liblttng-ust-dl/lttng-ust-dl.c index 13d2b435..d366f64f 100644 --- a/liblttng-ust-dl/lttng-ust-dl.c +++ b/liblttng-ust-dl/lttng-ust-dl.c @@ -67,7 +67,7 @@ int _lttng_ust_dl_libc_dlclose(void *handle) } static -void lttng_ust_dl_dlopen(void *so_base, const char *so_name) +void lttng_ust_dl_dlopen(void *so_base, const char *so_name, void *ip) { char resolved_path[PATH_MAX]; struct stat sostat; @@ -83,7 +83,7 @@ void lttng_ust_dl_dlopen(void *so_base, const char *so_name) } tracepoint(lttng_ust_dl, dlopen, - 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_dl_dlopen((void *) p->l_addr, p->l_name); + lttng_ust_dl_dlopen((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(lttng_ust_dl, dlclose, (void *) p->l_addr); + tracepoint(lttng_ust_dl, dlclose, (void *) p->l_addr, + __builtin_return_address(0)); } return _lttng_ust_dl_libc_dlclose(handle); } diff --git a/liblttng-ust-dl/ust_dl.c b/liblttng-ust-dl/ust_dl.c index f24f1d26..b25ba7b9 100644 --- a/liblttng-ust-dl/ust_dl.c +++ b/liblttng-ust-dl/ust_dl.c @@ -18,4 +18,5 @@ #define _LGPL_SOURCE #define TRACEPOINT_CREATE_PROBES +#define TP_IP_PARAM ip #include "ust_dl.h" diff --git a/liblttng-ust-dl/ust_dl.h b/liblttng-ust-dl/ust_dl.h index 10801898..ddab5306 100644 --- a/liblttng-ust-dl/ust_dl.h +++ b/liblttng-ust-dl/ust_dl.h @@ -37,7 +37,8 @@ extern "C" { #include TRACEPOINT_EVENT(lttng_ust_dl, dlopen, - TP_ARGS(void *, baddr, const char*, sopath, int64_t, size, int64_t, mtime), + TP_ARGS(void *, baddr, const char*, sopath, int64_t, size, + int64_t, mtime, void *, ip), TP_FIELDS( ctf_integer_hex(void *, baddr, baddr) ctf_string(sopath, sopath) @@ -47,7 +48,7 @@ TRACEPOINT_EVENT(lttng_ust_dl, dlopen, ) TRACEPOINT_EVENT(lttng_ust_dl, dlclose, - TP_ARGS(void *, baddr), + TP_ARGS(void *, baddr, void *, ip), TP_FIELDS( ctf_integer_hex(void *, baddr, baddr) ) -- 2.34.1