Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8eac1d5e authored by Rabin Vincent's avatar Rabin Vincent Committed by Arnaldo Carvalho de Melo
Browse files

perf callchain: Use debug_frame if eh_frame is unusable



When NO_LIBUNWIND_DEBUG_FRAME=0, use the .debug_frame if the .eh_frame
doesn't contain the approprate unwind tables.

Signed-off-by: default avatarRabin Vincent <rabin.vincent@axis.com>
Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Rabin Vincent <rabinv@axis.com>
Link: http://lkml.kernel.org/r/1443379079-29133-3-git-send-email-rabin.vincent@axis.com


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 4aa8e454
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -330,6 +330,7 @@ find_proc_info(unw_addr_space_t as, unw_word_t ip, unw_proc_info_t *pi,
	struct map *map;
	unw_dyn_info_t di;
	u64 table_data, segbase, fde_count;
	int ret = -EINVAL;

	map = find_map(ip, ui);
	if (!map || !map->dso)
@@ -348,13 +349,14 @@ find_proc_info(unw_addr_space_t as, unw_word_t ip, unw_proc_info_t *pi,
		di.u.rti.table_data = map->start + table_data;
		di.u.rti.table_len  = fde_count * sizeof(struct table_entry)
				      / sizeof(unw_word_t);
		return dwarf_search_unwind_table(as, ip, &di, pi,
		ret = dwarf_search_unwind_table(as, ip, &di, pi,
						need_unwind_info, arg);
	}

#ifndef NO_LIBUNWIND_DEBUG_FRAME
	/* Check the .debug_frame section for unwinding info */
	if (!read_unwind_spec_debug_frame(map->dso, ui->machine, &segbase)) {
	if (ret < 0 &&
	    !read_unwind_spec_debug_frame(map->dso, ui->machine, &segbase)) {
		int fd = dso__data_get_fd(map->dso, ui->machine);
		int is_exec = elf_is_exec(fd, map->dso->name);
		unw_word_t base = is_exec ? 0 : map->start;
@@ -370,7 +372,7 @@ find_proc_info(unw_addr_space_t as, unw_word_t ip, unw_proc_info_t *pi,
	}
#endif

	return -EINVAL;
	return ret;
}

static int access_fpreg(unw_addr_space_t __maybe_unused as,