• Arnaldo Carvalho de Melo's avatar
    perf python: Remove dependency on 'machine' methods · 959c2199
    Arnaldo Carvalho de Melo authored
    The python binding still doesn't provide symbol resolving facilities,
    but the recent addition of the trace_event__register_resolver() function
    made it add as a dependency the machine__resolve_kernel_addr() method,
    that in turn drags all the symbol resolving code.
    
    The problem:
    
      [root@zoo ~]# perf test -v python
      17: Try 'import perf' in python, checking link problems      :
      --- start ---
      test child forked, pid 6853
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      ImportError: /tmp/build/perf/python/perf.so: undefined symbol: machine__resolve_kernel_addr
      test child finished with -1
      ---- end ----
      Try 'import perf' in python, checking link problems: FAILED!
      [root@zoo ~]#
    
    Fix it by requiring this function to receive the resolver as a
    parameter, just like pevent_register_function_resolver(), i.e. do
    not explicitely refer to an object file not included in
    tools/perf/util/python-ext-sources.
    
      [root@zoo ~]# perf test python
      17: Try 'import perf' in python, checking link problems      : Ok
      [root@zoo ~]#
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Stephane Eranian <eranian@google.com>
    Fixes: c3168b0d ("perf symbols: Provide libtraceevent callback to resolve kernel symbols")
    Link: http://lkml.kernel.org/n/tip-vxlhh95v2em9zdbgj3jm7xi5@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    959c2199
trace-event.c 2.02 KB