X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=lib%2Fdebuginfo.c;h=7d12ebd27da0fa66d38294e9efd53c623896dc8b;hp=517e1bcac8dc25d55b8d31d9661e16c1cf11cfac;hb=306dbb33cef20de141e182869fd8f1dec63ecb00;hpb=458af89d3baff393a4c38f70520fb51b811ad932 diff --git a/lib/debuginfo.c b/lib/debuginfo.c index 517e1bca..7d12ebd2 100644 --- a/lib/debuginfo.c +++ b/lib/debuginfo.c @@ -84,7 +84,8 @@ void debug_info_source_destroy(struct debug_info_source *debug_info_src) } free(debug_info_src->func); - free(debug_info_src->filename); + free(debug_info_src->src_path); + free(debug_info_src->bin_path); g_free(debug_info_src); } @@ -140,31 +141,24 @@ struct debug_info_source *debug_info_source_create_from_so(struct so_info *so, } /* Can't retrieve src_loc from ELF only, skip it */ - if (so->is_elf_only) { - goto end; - } - - /* Lookup source location */ - ret = so_info_lookup_source_location(so, ip, &src_loc); - if (ret) { - goto error; + if (!so->is_elf_only) { + /* Lookup source location */ + ret = so_info_lookup_source_location(so, ip, &src_loc); + if (ret) { + goto error; + } } if (src_loc) { debug_info_src->line_no = src_loc->line_no; if (src_loc->filename) { - debug_info_src->filename = strdup(src_loc->filename); - if (!debug_info_src->filename) { + debug_info_src->src_path = strdup(src_loc->filename); + if (!debug_info_src->src_path) { goto error; } - /* - * The short version of the filename does not include - * the full path, it will only point to the last element - * of the path (anything after the last '/'). - */ - debug_info_src->short_filename = get_filename_from_path( + debug_info_src->short_src_path = get_filename_from_path( src_loc->filename); } @@ -172,6 +166,16 @@ struct debug_info_source *debug_info_source_create_from_so(struct so_info *so, source_location_destroy(src_loc); } + if (so->elf_path) { + debug_info_src->bin_path = strdup(so->elf_path); + if (!debug_info_src->bin_path) { + goto error; + } + + debug_info_src->short_bin_path = get_filename_from_path( + debug_info_src->bin_path); + } + end: return debug_info_src;