• Adrian Hunter's avatar
    perf symbols: Fix dso lookup by long name and missing buildids · e266a753
    Adrian Hunter authored
    Commit 4598a0a6 ("perf symbols: Improve DSO long names lookup speed
    with rbtree") Added a tree to lookup dsos by long name.  That tree gets
    corrupted whenever a dso long name is changed because the tree is not
    updated.
    
    One effect of that is buildid-list does not work with the 'with-hits'
    option because dso lookup fails and results in two structs for the same
    dso.  The first has the buildid but no hits, the second has hits but no
    buildid. e.g.
    
    Before:
    
      $ tools/perf/perf record ls
      arch     certs    CREDITS  Documentation  firmware  include
      ipc      Kconfig  lib      Makefile       net       REPORTING-BUGS
      scripts  sound    usr      block          COPYING   crypto
      drivers  fs       init     Kbuild         kernel    MAINTAINERS
      mm       README   samples  security       tools     virt
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.012 MB perf.data (11 samples) ]
      $ tools/perf/perf buildid-list
      574da826c66538a8d9060d393a8866289bd06005 [kernel.kallsyms]
      30c94dc66a1fe95180c3d68d2b89e576d5ae213c /lib/x86_64-linux-gnu/libc-2.19.so
      $ tools/perf/perf buildid-list -H
      574da826c66538a8d9060d393a8866289bd06005 [kernel.kallsyms]
      0000000000000000000000000000000000000000 /lib/x86_64-linux-gnu/libc-2.19.so
    
    After:
    
      $ tools/perf/perf buildid-list -H
      574da826c66538a8d9060d393a8866289bd06005 [kernel.kallsyms]
      30c94dc66a1fe95180c3d68d2b89e576d5ae213c /lib/x86_64-linux-gnu/libc-2.19.so
    
    The fix is to record the root of the tree on the dso so that
    dso__set_long_name() can update the tree when the long name changes.
    Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Don Zickus <dzickus@redhat.com>
    Cc: Douglas Hatch <doug.hatch@hp.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Scott J Norton <scott.norton@hp.com>
    Cc: Waiman Long <Waiman.Long@hp.com>
    Fixes: 4598a0a6 ("perf symbols: Improve DSO long names lookup speed with rbtree")
    Link: http://lkml.kernel.org/r/1447408112-1920-2-git-send-email-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    e266a753
dso.c 30.9 KB