• Jiri Olsa's avatar
    perf evsel: Fix 32 bit values endianity swap for sample_id_all header · 37073f9e
    Jiri Olsa authored
    We swap the sample_id_all header by u64 pointers. Some members of the
    header happen to be 32 bit values. We need to handle them separatelly.
    
    Together with other endianity patches, this change fixies perf report
    discrepancies on origin and target systems as described in test 1 below,
    e.g. following perf report diff:
    
    ...
          0.12%               ps  [kernel.kallsyms]    [k] clear_page
    -     0.12%              awk  bash                 [.] alloc_word_desc
    +     0.12%              awk  bash                 [.] yyparse
          0.11%   beah-rhts-task  libpython2.6.so.1.0  [.] 0x5560e
          0.10%             perf  libc-2.12.so         [.] __ctype_toupper_loc
    -     0.09%  rhts-test-runne  bash                 [.] maybe_make_export_env
    +     0.09%  rhts-test-runne  bash                 [.] 0x385a0
          0.09%               ps  [kernel.kallsyms]    [k] page_fault
    ...
    
    Note, running following to test perf endianity handling:
    test 1)
      - origin system:
        # perf record -a -- sleep 10 (any perf record will do)
        # perf report > report.origin
        # perf archive perf.data
    
      - copy the perf.data, report.origin and perf.data.tar.bz2
        to a target system and run:
        # tar xjvf perf.data.tar.bz2 -C ~/.debug
        # perf report > report.target
        # diff -u report.origin report.target
    
      - the diff should produce no output
        (besides some white space stuff and possibly different
         date/TZ output)
    
    test 2)
      - origin system:
        # perf record -ag -fo /tmp/perf.data -- sleep 1
      - mount origin system root to the target system on /mnt/origin
      - target system:
        # perf script --symfs /mnt/origin -I -i /mnt/origin/tmp/perf.data \
         --kallsyms /mnt/origin/proc/kallsyms
      - complete perf.data header is displayed
    Signed-off-by: default avatarJiri Olsa <jolsa@redhat.com>
    Reviewed-by: default avatarDavid Ahern <dsahern@gmail.com>
    Tested-by: default avatarDavid Ahern <dsahern@gmail.com>
    Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Link: http://lkml.kernel.org/r/1338380624-7443-4-git-send-email-jolsa@redhat.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    37073f9e
evsel.c 16.6 KB