Fix: don't call __builtin_return_address(0) on 32-bit powerpc
[lttng-ust.git] / liblttng-ust-dl / lttng-ust-dl.c
index d6abeff0820e024d1a6512213df5c8ec6a5e539f..8f2faac00630717ee96bf3fa1e23681075e151ca 100644 (file)
@@ -27,6 +27,7 @@
 
 #include <lttng/ust-dlfcn.h>
 #include <lttng/ust-elf.h>
+#include <helper.h>
 #include "usterr-signal-safe.h"
 
 /* Include link.h last else it conflicts with ust-dlfcn. */
@@ -104,18 +105,17 @@ 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:
@@ -137,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());
                }
        }
 
@@ -146,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);
                }
        }
This page took 0.02502 seconds and 4 git commands to generate.