Messages in this thread | | | Date | Tue, 22 Sep 2015 09:46:18 -0400 | From | Steven Rostedt <> | Subject | Re: [PATCH v5] tools lib traceevent: str addresses in heterogeneous arch environments |
| |
On Tue, 22 Sep 2015 14:22:03 +0100 Kapileshwar Singh <kapileshwar.singh@arm.com> wrote:
> if (!(field->flags & FIELD_IS_ARRAY) && > field->size == pevent->long_size) { > - addr = *(unsigned long *)(data + field->offset); > + > + /* Handle heterogeneous recording and processing > + * architectures > + * > + * CASE I: > + * Traces recorded on 32-bit devices (32-bit > + * addressing) and processed on 64-bit devices: > + * In this case, only 32 bits should be read. > + * > + * CASE II: > + * Traces recorded on 64 bit devices and processed > + * on 32-bit devices: > + * In this case, 64 bits must be read.
Probably should have added a comment about not caring about endianess and why, but that can be added later. This patch is good enough for now.
Reviewed-by: Steven Rostedt <rostedt@goodmis.org>
Arnaldo, want to pick this up?
-- Steve
> + */ > + addr = (pevent->long_size == 8) ? > + *(unsigned long long *)(data + field->offset) : > + (unsigned long long)*(unsigned int *)(data + field->offset); > + > /* Check if it matches a print format */ > printk = find_printk(pevent, addr); > if (printk) > trace_seq_puts(s, printk->printk); > else > - trace_seq_printf(s, "%lx", addr); > + trace_seq_printf(s, "%llx", addr); > break; > } > str = malloc(len + 1);
| |