X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=liblttng-ust%2Flttng-ust-baddr.c;h=922899b44e50406042d47480e713686350a3c703;hb=6d0c2f84f1ec7f09ecfc2da1bb6145c0b7b71e26;hp=42ae630d99eadd1132025599f13c4505dd697a81;hpb=f02baefb3ba4d5493816d63f65625ba4269224d2;p=lttng-ust.git diff --git a/liblttng-ust/lttng-ust-baddr.c b/liblttng-ust/lttng-ust-baddr.c index 42ae630d..922899b4 100644 --- a/liblttng-ust/lttng-ust-baddr.c +++ b/liblttng-ust/lttng-ust-baddr.c @@ -154,21 +154,22 @@ static void dump_exec_baddr(struct extract_data *data) { void *owner = data->owner; - Dl_info dl_info = { 0 }; void *base_addr_ptr; - char resolved_path[PATH_MAX]; + char exe_path[PATH_MAX]; + ssize_t exe_len; base_addr_ptr = data->exec_baddr; if (!base_addr_ptr) return; /* - * We have to use Dl_info to determine the executable full path. + * We have to use /proc/self/exe to determine the executable full + * path. */ - if (!dladdr(base_addr_ptr, &dl_info)) + exe_len = readlink("/proc/self/exe", exe_path, sizeof(exe_path) - 1); + if (exe_len <= 0) return; - if (!realpath(dl_info.dli_fname, resolved_path)) - return; - trace_baddr(base_addr_ptr, resolved_path, 0, owner); + exe_path[exe_len] = '\0'; + trace_baddr(base_addr_ptr, exe_path, 0, owner); } int lttng_ust_baddr_statedump(void *owner)