All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] perf tool: Fix cross-endian analysis
@ 2015-04-09 20:15 David Ahern
  2015-04-10  8:27 ` Jiri Olsa
  2015-04-11  6:37 ` [tip:perf/core] perf tools: " tip-bot for David Ahern
  0 siblings, 2 replies; 5+ messages in thread
From: David Ahern @ 2015-04-09 20:15 UTC (permalink / raw)
  To: acme; +Cc: linux-kernel, David Ahern, Jiri Olsa, Namhyung Kim

Trying to analyze a big endian data file on little endian system
fails with the error:
  0xa9b40 [0x70]: failed to process type: 9

The problem is that header parsing is not done correctly because
the file attributes are not swapped. Make it so. With this patch
able to analyze a sparc64 data file on x86_64.

Signed-off-by: David Ahern <david.ahern@oracle.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
---
 tools/perf/util/header.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
index e38cf62..45b7e72 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -2586,8 +2586,11 @@ int perf_session__read_header(struct perf_session *session)
 		if (read_attr(fd, header, &f_attr) < 0)
 			goto out_errno;
 
-		if (header->needs_swap)
+		if (header->needs_swap) {
+			f_attr.ids.size   = bswap_64(f_attr.ids.size);
+			f_attr.ids.offset = bswap_64(f_attr.ids.offset);
 			perf_event__attr_swap(&f_attr.attr);
+		}
 
 		tmp = lseek(fd, 0, SEEK_CUR);
 		evsel = perf_evsel__new(&f_attr.attr);
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-04-11  6:38 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-04-09 20:15 [PATCH] perf tool: Fix cross-endian analysis David Ahern
2015-04-10  8:27 ` Jiri Olsa
2015-04-10 12:49   ` Arnaldo Carvalho de Melo
2015-04-10 13:52   ` David Ahern
2015-04-11  6:37 ` [tip:perf/core] perf tools: " tip-bot for David Ahern

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.