diff mbox

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

Message ID 1465064165-14885-2-git-send-email-drjones@redhat.com
State New
Headers show

Commit Message

Andrew Jones June 4, 2016, 6:15 p.m. UTC
Signed-off-by: Andrew Jones <drjones@redhat.com>
---
 lib/libcflat.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Alex Bennée June 6, 2016, 10:49 a.m. UTC | #1
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

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
Andrew Jones June 6, 2016, 12:12 p.m. UTC | #2
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.

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 June 6, 2016, 2:52 p.m. UTC | #3
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
diff mbox

Patch

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
 
 #define __ALIGN_MASK(x, mask)	(((x) + (mask)) & ~(mask))
 #define __ALIGN(x, a)		__ALIGN_MASK(x, (typeof(x))(a) - 1)