Fix: unchecked return value in trace_clock_read64_monotonic
[lttng-ust.git] / liblttng-ust-dl / ustdl.c
index dbde8b7fedd9976d7f4f28619c58d0c16afe3e3c..fde537f62f057b94c646bd1af824665d7ed274ec 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
+#define _LGPL_SOURCE
 #define _GNU_SOURCE
+#include <lttng/ust-dlfcn.h>
 #include <inttypes.h>
-#include <dlfcn.h>
 #include <link.h>
 #include <unistd.h>
 #include <stdio.h>
@@ -66,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;
@@ -82,29 +83,31 @@ 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;
 }
 
 void *dlopen(const char *filename, int flag)
 {
        void *handle = _lttng_ust_dl_libc_dlopen(filename, flag);
-       if (handle) {
+       if (__tracepoint_ptrs_registered && handle) {
                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;
 }
 
 int dlclose(void *handle)
 {
-       if (handle) {
+       if (__tracepoint_ptrs_registered && 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);
 }
This page took 0.023511 seconds and 4 git commands to generate.