[PATCHv5 0/3] perf, tool: Fix endian issues

From: Jiri Olsa
Date: Wed May 30 2012 - 08:24:23 EST


hi,
sending fixies to properly handle perf.data endians.

This patchset contains 3 updated patches with comments from David.

I can see still some discrepancies when reporting data on target
and origin system. It's not related to endianity but to kallsyms
symbols processing and deserves another patchset.

There's another David's fix that needs to be taken as well:
http://marc.info/?l=linux-kernel&m=133770186330032&w=2

v5 changes:
- patch 1/3 s/DSO__READ/DSO__SWAP/
- updated all changelogs with perf report diff example

v4 changes:
- fixed patch 6/7 which was broken for -fstrict-aliasing related optimization
- added patch 3/7 and 7/7

v3 changes:
- added patch 5 to fix addons bitmask handling

v2 changes:
- added patches 3 and 4 to handle sample_id_all header endianity


Attached patches:
1/3 perf, tool: Handle different endians properly during symbol load
2/3 perf, tool: Handle endianity swap on sample_id_all header data
3/3 perf, tool: Fix 32 bit values endianity swap for sample_id_all header


Tested by running following usecases:
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

test 3)
- tested with old perf.data version, worked proplerly

Tested by above usecase cross following architectures:
i386, x86_64, s390x, ppc64, ppc32

Big thank to Caspar Zhang who verified this within RH QE testsuites.

thanks,
jirka
---
tools/perf/util/evsel.c | 29 +++++++++++++++-----
tools/perf/util/session.c | 67 +++++++++++++++++++++++++++++++++++++--------
tools/perf/util/symbol.c | 33 +++++++++++++++++++++-
tools/perf/util/symbol.h | 30 ++++++++++++++++++++
4 files changed, 139 insertions(+), 20 deletions(-)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/