+ found = 0;
+ ret = lttng_ust_elf_get_build_id(elf, &bin_data->build_id,
+ &bin_data->build_id_len,
+ &found);
+ if (ret) {
+ goto end;
+ }
+ bin_data->has_build_id = !!found;
+ found = 0;
+ ret = lttng_ust_elf_get_debug_link(elf, &bin_data->dbg_file,
+ &bin_data->crc,
+ &found);
+ if (ret) {
+ goto end;
+ }
+ bin_data->has_debug_link = !!found;
+
+ bin_data->is_pic = lttng_ust_elf_is_pic(elf);
+
+end:
+ lttng_ust_elf_destroy(elf);
+ return ret;
+}
+
+static
+int trace_baddr(struct bin_info_data *bin_data)
+{
+ int ret = 0;
+
+ if (!bin_data->vdso) {
+ ret = get_elf_info(bin_data);
+ if (ret) {
+ goto end;
+ }
+ } else {
+ bin_data->memsz = 0;
+ bin_data->has_build_id = 0;
+ bin_data->has_debug_link = 0;
+ }
+
+ ret = trace_statedump_event(trace_bin_info_cb, bin_data->owner,
+ bin_data);
+ if (ret) {
+ goto end;
+ }
+
+ if (bin_data->has_build_id) {
+ ret = trace_statedump_event(
+ trace_build_id_cb, bin_data->owner, bin_data);
+ free(bin_data->build_id);
+ if (ret) {
+ goto end;
+ }
+ }
+
+ if (bin_data->has_debug_link) {
+ ret = trace_statedump_event(
+ trace_debug_link_cb, bin_data->owner, bin_data);
+ free(bin_data->dbg_file);
+ if (ret) {
+ goto end;
+ }
+ }
+
+end:
+ return ret;