|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v5 14/28] x86, xsplice: Print payload's symbol name and payload name in backtraces
>>> On 24.03.16 at 21:00, <konrad.wilk@xxxxxxxxxx> wrote:
> @@ -331,16 +332,17 @@ static char *pointer(char *str, char *end, const char
> **fmt_ptr,
> {
> unsigned long sym_size, sym_offset;
> char namebuf[KSYM_NAME_LEN+1];
> + bool_t payload = 0;
>
> /* Advance parents fmt string, as we have consumed 's' or 'S' */
> ++*fmt_ptr;
>
> s = symbols_lookup((unsigned long)arg, &sym_size, &sym_offset,
> namebuf);
> -
> - /* If the symbol is not found, fall back to printing the address */
> + /* If the symbol is not found, fall back to printing the address. */
> if ( !s )
> break;
> -
Please don't drop blank lines like this.
> + if ( strncmp(namebuf, s, KSYM_NAME_LEN) )
> + payload = 1;
What is this about? A comment is absolutely needed here, the
more that without context "payload" is also an unclear term.
And then - would simply comparing the two pointers suffice?
> +static const char *xsplice_symbols_lookup(unsigned long addr,
> + unsigned long *symbolsize,
> + unsigned long *offset,
> + char *namebuf)
> +{
> + struct payload *data;
> + unsigned int i;
> + int best;
> +
> + /*
> + * No locking since this list is only ever changed during apply or revert
> + * context.
> + */
> + list_for_each_entry ( data, &applied_list, applied_list )
> + {
> + if ( !((void *)addr >= data->text_addr &&
> + (void *)addr < (data->text_addr + data->text_size)) )
> + continue;
It may be just me, but I find such !() constructs harder to understand
than the equivalent without that negation.
> + best = -1;
> +
> + for ( i = 0; i < data->nsyms; i++ )
> + {
> + if ( data->symtab[i].value <= addr &&
> + ( best == -1 ||
Stray blank.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |