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 Superseded
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(-)

-- 
2.4.11

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)