Thomas Friebel
2007-Feb-06 18:11 UTC
[Xen-devel] [PATCH] xentrace_format: use low 32 bit of ''event'' field
xentrace and/or xentrace_format does not handle the ''event''
field of
trace entries correctly.
''event'' is a 32 bit field:
xen/include/public/trace.h:90: uint32_t event;
When compiling for 64 bit ''event'' gets 64 bit aligned by gcc
(I use gcc
4.1.2 by openSUSE 10.2 x86-64). xentrace dumps the data into the trace
file like it is in memory. xentrace_format reads the ''event''
field as a
''long'' value. So in a 64 bit environment the highest 32 bit
contain
bogus data. This patch masks these highest 32 bit in xentrace_format. I
chose to fix this in xentrace_format because it is not on the
performance critical path Xen -> ... -> file.
Signed-off-by: Thomas Friebel <thomas.friebel@amd.com>
Cheers
Thomas
diff -r 07455edbf4f7 tools/xentrace/xentrace_format
--- a/tools/xentrace/xentrace_format Tue Feb 06 13:51:29 2007 +0100
+++ b/tools/xentrace/xentrace_format Tue Feb 06 17:13:15 2007 +0100
@@ -107,6 +107,10 @@ while not interrupted:
(tsc, event, d1, d2, d3, d4, d5) = struct.unpack(TRCREC, line)
+ # gcc aligns struct members when compiling for 64 bit
+ # so only use the lowest 32 bit of event
+ event &= 0xffffffff
+
#tsc = (tscH<<32) | tscL
#print i, tsc
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel