[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <53C51A8C.7050304@intel.com>
Date: Tue, 15 Jul 2014 15:11:56 +0300
From: Adrian Hunter <adrian.hunter@...el.com>
To: Arnaldo Carvalho de Melo <acme@...nel.org>
CC: Peter Zijlstra <peterz@...radead.org>,
linux-kernel@...r.kernel.org, David Ahern <dsahern@...il.com>,
Frederic Weisbecker <fweisbec@...il.com>,
Jiri Olsa <jolsa@...hat.com>,
Namhyung Kim <namhyung@...il.com>,
Paul Mackerras <paulus@...ba.org>,
Stephane Eranian <eranian@...gle.com>
Subject: Re: [PATCH 08/41] perf tools: Fix missing label symbols
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.hunter@...el.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 majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists