• Arnaldo Carvalho de Melo's avatar
    perf buildid-list: Fix --with-hits event processing · b5c874f1
    Arnaldo Carvalho de Melo authored
    When we use plain 'perf buildid-list' we use only what is in the buildid
    table in the perf.data header. And those have absolute pathnames because
    at 'perf record' time we used __perf_session__process_events and that
    doesn't sets up the path shortening code in map__new() that happens if
    symbol_conf.full_paths is false, the default.
    
    On the other hand, when we use 'perf buildid-list --with-hits' we
    process all the events using perf_session__process_events, adding
    entries to the global DSO list _after_ removing the current directory
    from the DSO name, for presentation purposes.
    
    Because of that we end up having two entries in the DSO list when
    recording events for binaries using relative pathnames.
    
    Fix it minimally by setting symbol_conf.full_paths to true when marking
    the DSOs with hits in 'perf buildid-list --with-hits', as used by 'perf
    archive'
    
    Right fix longer term is to shorten the path only at presentation time.
    Will be done for 2.6.36.
    Reported-by: default avatarStephane Eranian <eranian@google.com>
    Tested-by: default avatarStephane Eranian <eranian@google.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Frédéric Weisbecker <fweisbec@gmail.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Tom Zanussi <tzanussi@gmail.com>
    LKML-Reference: <20100601183837.GC4093@ghostprotocols.net>
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    b5c874f1
builtin-buildid-list.c 1.49 KB