Re: [kvm-unit-tests PATCH v2 01/10] lib: xstr: allow multiple args

Alex Bennée
2016-06-06T14:52:21Z

Andrew Jones <drjones@redhat.com> writes:

> On Mon, Jun 06, 2016 at 11:49:09AM +0100, Alex Bennée wrote:
>>
>> Andrew Jones <drjones@redhat.com> writes:
>>
>> > Signed-off-by: Andrew Jones <drjones@redhat.com>
>> > ---
>> > lib/libcflat.h | 4 ++--
>> > 1 file changed, 2 insertions(+), 2 deletions(-)
>> >
>> > diff --git a/lib/libcflat.h b/lib/libcflat.h
>> > index 582e3fc60e287..e5e588c742763 100644
>> > --- a/lib/libcflat.h
>> > +++ b/lib/libcflat.h
>> > @@ -27,8 +27,8 @@
>> >
>> > #define __unused __attribute__((__unused__))
>> >
>> > -#define xstr(s) xxstr(s)
>> > -#define xxstr(s) #s
>> > +#define xstr(s...) xxstr(s)
>> > +#define xxstr(s...) #s
>>
>> OK my knowledge of stringinfication is still rusty despite having read
>> the QEMU softmmu code. However:
>>
>> printf("Unknown subtest:" xstr(foo,ba) "\n");
>>
>> Yields:
>>
>> Unknown subtestfoo,ba
>>
>> Is that what you wanted? Or were you aiming for xstr(foo,ba) => fooba
>
> The way I did it (which is like Linux) is what I wanted, see Linux's
> version in include/linux/stringify.h. I can correct $SUBJECT to make
> that more clear if you like.

Linux seems to have multiple local definitions of these stringyfy
operations so it is a little unclear. Any additional clarity in $SUBJECT
is welcome ;-)

>
> Thanks,
> drew
>
>
>
>>
>> As an aside I couldn't actually see xstr being called with multiple
>> arguments in the source tree.
>>
>> >
>> > #define __ALIGN_MASK(x, mask) (((x) + (mask)) & ~(mask))
>> > #define __ALIGN(x, a) __ALIGN_MASK(x, (typeof(x))(a) - 1)
>>
>>
>> --
>> Alex Bennée
>> --
>> To unsubscribe from this list: send the line "unsubscribe kvm" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at http://vger.kernel.org/majordomo-info.html

--
Alex Bennée