perf tools: Use the DWARF unwind info only if loaded
authorJean Pihet <jean.pihet@linaro.org>
Mon, 16 Dec 2013 16:43:14 +0000 (17:43 +0100)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 13 Jan 2014 13:06:26 +0000 (10:06 -0300)
Use the info only if it has been found in the .debug_frame section of
the ELF binary.

Signed-off-by: Jean Pihet <jean.pihet@linaro.org>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: linaro-kernel@lists.linaro.org
Cc: patches@linaro.org
Link: http://lkml.kernel.org/r/1387212194-8028-1-git-send-email-jean.pihet@linaro.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/unwind.c

index 0efd5393de85ea33775198f25045cfa00a612247..416f22bf3693b6dfa9ae726bd85ca69e81b44c03 100644 (file)
@@ -340,10 +340,10 @@ find_proc_info(unw_addr_space_t as, unw_word_t ip, unw_proc_info_t *pi,
        /* Check the .debug_frame section for unwinding info */
        if (!read_unwind_spec_debug_frame(map->dso, ui->machine, &segbase)) {
                memset(&di, 0, sizeof(di));
-               dwarf_find_debug_frame(0, &di, ip, 0, map->dso->name,
-                                      map->start, map->end);
-               return dwarf_search_unwind_table(as, ip, &di, pi,
-                                                need_unwind_info, arg);
+               if (dwarf_find_debug_frame(0, &di, ip, 0, map->dso->name,
+                                          map->start, map->end))
+                       return dwarf_search_unwind_table(as, ip, &di, pi,
+                                                        need_unwind_info, arg);
        }
 #endif