diff options
author | Steven Rostedt <rostedt@goodmis.org> | 2009-12-22 22:50:05 -0500 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2009-12-22 22:50:05 -0500 |
commit | 507200e51aed13cb11fbe54eaaee6f4bbe4aaade (patch) | |
tree | d17c082ecde9ffe41c8eb082b8dfa676bd432daa | |
parent | 9a29217ec2a13685127d8105e44feb461cc67c56 (diff) |
parse-events: Handle 32 bit reading 64 bit print format
A 32 bit machine does not handle %p and %lu well if the trace is
64 bits. That is, it translates those two into 32 bit output instead
of doing 64 bit.
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r-- | parse-events.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/parse-events.c b/parse-events.c index 0600973..4ba7df9 100644 --- a/parse-events.c +++ b/parse-events.c | |||
@@ -3067,6 +3067,17 @@ static void pretty_print(struct trace_seq *s, void *data, int size, struct event | |||
3067 | break; | 3067 | break; |
3068 | } | 3068 | } |
3069 | } | 3069 | } |
3070 | if (pevent->long_size == 8 && ls) { | ||
3071 | char *p; | ||
3072 | |||
3073 | ls = 2; | ||
3074 | /* make %l into %ll */ | ||
3075 | p = strchr(format, 'l'); | ||
3076 | if (p) | ||
3077 | memmove(p+1, p, strlen(p)+1); | ||
3078 | else if (strcmp(format, "%p") == 0) | ||
3079 | strcpy(format, "0x%llx"); | ||
3080 | } | ||
3070 | switch (ls) { | 3081 | switch (ls) { |
3071 | case 0: | 3082 | case 0: |
3072 | trace_seq_printf(s, format, (int)val); | 3083 | trace_seq_printf(s, format, (int)val); |