• Jiri Olsa's avatar
    perf tools: Carry perf_event_attr bitfield throught different endians · e108c66e
    Jiri Olsa authored
    When the perf data file is read cross architectures, the
    perf_event__attr_swap function takes care about endianness of all the
    struct fields except the bitfield flags.
    
    The bitfield flags need to be transformed as well, since the bitfield
    binary storage differs for both endians.
    
    ABI says:
      Bit-fields are allocated from right to left (least to most significant)
      on little-endian implementations and from left to right (most to least
      significant) on big-endian implementations.
    
    The above seems to be byte specific, so we need to reverse each byte of
    the bitfield. 'Internet' also says this might be implementation specific
    and we probably need proper fix and carry perf_event_attr bitfield flags
    in separate data file FEAT_ section. Thought this seems to work for now.
    
    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: Paul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Link: http://lkml.kernel.org/r/1337151548-2396-3-git-send-email-jolsa@redhat.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    e108c66e
session.c 39.4 KB