On 07/14/2014 11:38 PM, Arnaldo Carvalho de Melo wrote: > Em Mon, Jul 14, 2014 at 01:02:32PM +0300, Adrian Hunter escreveu: >> label symbols are missing because elf_sec__is_a() fails >> to find the section because the section strings do not >> match the section headers because the sections headers >> are from the 'runtime' object and the sections strings >> are from the 'symbol source' object. >> >> Fix by getting the section strings from the 'runtime' >> object so that they match the section headers. > > Would be great to have a 'perf test' entry that fail when looking for > those 'label symbols', i.e. looking for one such symbol in vmlinux that > we know is always there, in some written in stone area of the kernel, > where this label vanishing is unlikely to happen. > > Can you elaborate on the case that fails? So that I can test it here, > and then after the fix, check that it indeed fixes the problem? I may > well write that test myself and insert it in my branch just before this > one.
It fails with "_start" which is a label in /lib/x86_64-linux-gnu/ld-2.17.so. It is where the program starts so it is not a function, and it is the first user space address of an exec'ed process. If you do: perf record --per-thread -T -e branches:u -c1 -d -- uname Then, assuming the old BTS driver doesn't lose the data, it should be pretty much the first branch. pref script | head > > - Arnaldo > >> Signed-off-by: Adrian Hunter <adrian.hun...@intel.com> >> --- >> tools/perf/util/symbol-elf.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c >> index 6864661..8c96817 100644 >> --- a/tools/perf/util/symbol-elf.c >> +++ b/tools/perf/util/symbol-elf.c >> @@ -732,7 +732,7 @@ int dso__load_sym(struct dso *dso, struct map *map, >> if (symstrs == NULL) >> goto out_elf_end; >> >> - sec_strndx = elf_getscn(elf, ehdr.e_shstrndx); >> + sec_strndx = elf_getscn(runtime_ss->elf, runtime_ss->ehdr.e_shstrndx); >> if (sec_strndx == NULL) >> goto out_elf_end; >> >> -- >> 1.8.3.2 > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/