Messages in this thread | | | Date | Mon, 21 Sep 2015 09:56:24 -0400 | From | Steven Rostedt <> | Subject | Re: [PATCH v3] tools lib traceevent: str addresses in heterogeneous arch environments |
| |
On Mon, 21 Sep 2015 14:24:13 +0100 Kapileshwar Singh <kapileshwar.singh@arm.com> wrote:
Thanks, this is better but one nit (below).
> @@ -3754,13 +3754,31 @@ static void print_str_arg(struct trace_seq *s, void *data, int size, > */ > 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, the higher 32-bits of the address > + * need to be ignored. > + * > + * CASE II: > + * Traces recorded on 64 bit devices and processed > + * on 32-bit devices. In this case 64 bits must be > + * read. > + */ > + addr = (pevent->long_size == 8) ? > + *(unsigned long long *)(data + field->offset) : > + (unsigned long long)*(unsigned int *)(data + field->offset);
Please indent the above lines such that it's not at the same level as the start. It is a single C command, and needs to be reflected as such. If it goes more than 80 characters, so be it. The above is worse than a line a little longer than 80.
-- Steve
> + > /* 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);
| |