#include <lttng/tracepoint.h>
TRACEPOINT_EVENT(ust_baddr, push,
- 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)
)
TRACEPOINT_EVENT(ust_baddr, pop,
- TP_ARGS(void *, baddr),
+ TP_ARGS(void *, baddr, void *, ip),
TP_FIELDS(
ctf_integer_hex(void *, baddr, baddr)
)
}
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;
}
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;
}
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;
}
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);
}