Skip to contentSkip to conversation

Patch "perf symbols: Fixup symbol sizes before picking best ones" has been added to the 4.4-stable tree

PATCH [email protected] 1 participant 1 message Oct 29, 2016

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

perf symbols: Fixup symbol sizes before picking best ones

to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
perf-symbols-fixup-symbol-sizes-before-picking-best-ones.patch
and it can be found in the queue-4.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From 432746f8e0b6a82ba832b771afe31abd51af6752 Mon Sep 17 00:00:00 2001

From: Arnaldo Carvalho de Melo <[email protected]>
Date: Thu, 1 Sep 2016 11:00:23 -0300
Subject: perf symbols: Fixup symbol sizes before picking best ones

From: Arnaldo Carvalho de Melo <[email protected]>

commit 432746f8e0b6a82ba832b771afe31abd51af6752 upstream.

When we call symbol__fixup_duplicate() we use algorithms to pick the "best" symbols for cases where there are various functions/aliases to an address, and those check zero size symbols, which, before calling symbol__fixup_end() are _all_ symbols in a just parsed kallsyms file.

So first fixup the end, then fixup the duplicates.

Found while trying to figure out why 'perf test vmlinux' failed, see the output of 'perf test -v vmlinux' to see cases where the symbols picked as best for vmlinux don't match the ones picked for kallsyms.

Cc Anton Blanchard <[email protected]>
Cc Adrian Hunter <[email protected]>
Cc David Ahern <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Masami Hiramatsu <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Wang Nan <[email protected]>
Fixes 694bf407b061 ("perf symbols: Add some heuristics for choosing the best duplicate symbol")
---
 tools/perf/util/symbol-elf.c |    2 +-
 tools/perf/util/symbol.c     |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
tools/perf/util/symbol-elf.c +1 -1
@@ -1091,8 +1091,8 @@ new_symbol:
 	 * For misannotated, zeroed, ASM function sizes.
 	 */
 	if (nr > 0) {
-		symbols__fixup_duplicate(&dso->symbols[map->type]);
 		symbols__fixup_end(&dso->symbols[map->type]);
+		symbols__fixup_duplicate(&dso->symbols[map->type]);
 		if (kmap) {
 			/*
 			 * We need to fixup this here too because we create new
tools/perf/util/symbol.c +1 -1
@@ -1278,8 +1278,8 @@ int dso__load_kallsyms(struct dso *dso,
 	if (kallsyms__delta(map, filename, &delta))
 		return -1;
 
-	symbols__fixup_duplicate(&dso->symbols[map->type]);
 	symbols__fixup_end(&dso->symbols[map->type]);
+	symbols__fixup_duplicate(&dso->symbols[map->type]);
 
 	if (dso->kernel == DSO_TYPE_GUEST_KERNEL)
 		dso->symtab_type = DSO_BINARY_TYPE__GUEST_KALLSYMS;

Patches currently in stable-queue which might be from [email protected] are

queue-4.4/perf-hists-browser-fix-event-group-display.patch queue-4.4/perf-symbols-check-symbol_conf.allow_aliases-for-kallsyms-loading-too.patch queue-4.4/perf-stat-fix-interval-output-values.patch queue-4.4/perf-symbols-fixup-symbol-sizes-before-picking-best-ones.patch