Messages in this thread | | | Date | Sun, 25 Jun 2017 22:47:13 +0900 | From | Namhyung Kim <> | Subject | Re: [PATCH/RFC 3/9] perf symbols: Discard symbols in kallsyms for loaded modules |
| |
On Fri, Jun 23, 2017 at 10:51:05AM -0300, Arnaldo Carvalho de Melo wrote: > Em Fri, Jun 23, 2017 at 02:48:21PM +0900, Namhyung Kim escreveu: > > If a module is already loaded, it should have symbols and no need to > > load new symbols from kallsyms. Actually kallsyms can have different > > addresses if the module was reloaded. > > Well, if it is loaded, then it should match what is in kallsyms, no?
No, the perf.data was recorded with a module, and then the module was modified and reloaded at the same address.
Maybe the word "loaded" can be confusing - if perf.data file has symbols in the module v1 but kallsyms has symbols in the module v2. So it needs to read symbols from the module v1 (in the build-id cache).
> > > Current code just discards the first symbols only, but it should do the > > same for all symbols in the module. Note that the kernel doesn't set > > the dso->loaded bit so simply checking it would do the job IMHO. > > The kernel sets dso->loaded? Can you rephrase this part? And if this > procedure doesn't set dso->loaded how can simply checking it do the job? > > Can you clarify the above sentence? Please elaborate the scenario more > fully.
Oh, I made it confusing, sorry.. I mean that it's in the middle of the dso__load() so the (kernel) dso->loaded bit was not set yet.
Thanks, Namhyung
> > - Arnaldo > > > Cc: Adrian Hunter <adrian.hunter@intel.com> > > Cc: Wang Nan <wangnan0@huawei.com> > > Signed-off-by: Namhyung Kim <namhyung@kernel.org> > > --- > > tools/perf/util/symbol.c | 9 +++++---- > > 1 file changed, 5 insertions(+), 4 deletions(-) > > > > diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c > > index e7a98dbd2aed..74078ba595b3 100644 > > --- a/tools/perf/util/symbol.c > > +++ b/tools/perf/util/symbol.c > > @@ -787,11 +787,12 @@ static int dso__split_kallsyms(struct dso *dso, struct map *map, u64 delta) > > curr_map = map; > > goto discard_symbol; > > } > > - > > - if (curr_map->dso->loaded && > > - !machine__is_default_guest(machine)) > > - goto discard_symbol; > > } > > + > > + if (curr_map->dso->loaded && > > + !machine__is_default_guest(machine)) > > + goto discard_symbol; > > + > > /* > > * So that we look just like we get from .ko files, > > * i.e. not prelinked, relative to map->start. > > -- > > 2.13.1
| |