Message ID | 1309ac93ff943931eb213dd87cd3570910b23926.1358094930.git.blauwirbel@gmail.com |
---|---|
State | New |
Headers | show |
On 2013-01-13 08:35, Blue Swirl wrote: > Fix by applying glue(). Also add do {} while(0) wrapping and fix > semicolon use while at it. > > Signed-off-by: Blue Swirl<blauwirbel@gmail.com> > --- > include/qemu/bswap.h | 20 ++++++++++---------- > 1 files changed, 10 insertions(+), 10 deletions(-) Reviewed-by: Richard Henderson <rth@twiddle.net> r~
Am 13.01.2013 17:35, schrieb Blue Swirl: > OpenBSD system compiler (gcc 4.2.1) has problems with concatenation > of macro arguments in macro functions: > CC aes.o > In file included from /src/qemu/include/qemu-common.h:126, > from /src/qemu/aes.c:30: > /src/qemu/include/qemu/bswap.h: In function 'leul_to_cpu': > /src/qemu/include/qemu/bswap.h:461: warning: implicit declaration of function 'bswapHOST_LONG_BITS' > /src/qemu/include/qemu/bswap.h:461: warning: nested extern declaration of 'bswapHOST_LONG_BITS' > > Function leul_to_cpu() is only used in kvm-all.c, so the warnings > are not fatal on OpenBSD without -Werror. > > Fix by applying glue(). Also add do {} while(0) wrapping and fix > semicolon use while at it. > > Signed-off-by: Blue Swirl <blauwirbel@gmail.com> Tested-by: Andreas Färber <afaerber@suse.de> This unbreaks the build on openSUSE 12.2 ppc64: gcc (SUSE Linux) 4.7.1 20120723 [gcc-4_7-branch revision 189773] Andreas
On Sun, Jan 13, 2013 at 04:35:41PM +0000, Blue Swirl wrote: > OpenBSD system compiler (gcc 4.2.1) has problems with concatenation > of macro arguments in macro functions: > CC aes.o > In file included from /src/qemu/include/qemu-common.h:126, > from /src/qemu/aes.c:30: > /src/qemu/include/qemu/bswap.h: In function 'leul_to_cpu': > /src/qemu/include/qemu/bswap.h:461: warning: implicit declaration of function 'bswapHOST_LONG_BITS' > /src/qemu/include/qemu/bswap.h:461: warning: nested extern declaration of 'bswapHOST_LONG_BITS' > > Function leul_to_cpu() is only used in kvm-all.c, so the warnings > are not fatal on OpenBSD without -Werror. > > Fix by applying glue(). Also add do {} while(0) wrapping and fix > semicolon use while at it. > > Signed-off-by: Blue Swirl <blauwirbel@gmail.com> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> In fact, this is not merely an improvement, and not OpenBSD specific. This is a vital bugfix for all big-endian hosts. Please apply.
David Gibson <david@gibson.dropbear.id.au> writes: > On Sun, Jan 13, 2013 at 04:35:41PM +0000, Blue Swirl wrote: >> OpenBSD system compiler (gcc 4.2.1) has problems with concatenation >> of macro arguments in macro functions: >> CC aes.o >> In file included from /src/qemu/include/qemu-common.h:126, >> from /src/qemu/aes.c:30: >> /src/qemu/include/qemu/bswap.h: In function 'leul_to_cpu': >> /src/qemu/include/qemu/bswap.h:461: warning: implicit declaration of function 'bswapHOST_LONG_BITS' >> /src/qemu/include/qemu/bswap.h:461: warning: nested extern declaration of 'bswapHOST_LONG_BITS' >> >> Function leul_to_cpu() is only used in kvm-all.c, so the warnings >> are not fatal on OpenBSD without -Werror. >> >> Fix by applying glue(). Also add do {} while(0) wrapping and fix >> semicolon use while at it. >> >> Signed-off-by: Blue Swirl <blauwirbel@gmail.com> > > Reviewed-by: David Gibson <david@gibson.dropbear.id.au> > > In fact, this is not merely an improvement, and not OpenBSD specific. > This is a vital bugfix for all big-endian hosts. > > Please apply. Suggest to reword the commit message accordingly then.
On 17.01.2013, at 08:50, Markus Armbruster wrote: > David Gibson <david@gibson.dropbear.id.au> writes: > >> On Sun, Jan 13, 2013 at 04:35:41PM +0000, Blue Swirl wrote: >>> OpenBSD system compiler (gcc 4.2.1) has problems with concatenation >>> of macro arguments in macro functions: >>> CC aes.o >>> In file included from /src/qemu/include/qemu-common.h:126, >>> from /src/qemu/aes.c:30: >>> /src/qemu/include/qemu/bswap.h: In function 'leul_to_cpu': >>> /src/qemu/include/qemu/bswap.h:461: warning: implicit declaration of function 'bswapHOST_LONG_BITS' >>> /src/qemu/include/qemu/bswap.h:461: warning: nested extern declaration of 'bswapHOST_LONG_BITS' >>> >>> Function leul_to_cpu() is only used in kvm-all.c, so the warnings >>> are not fatal on OpenBSD without -Werror. >>> >>> Fix by applying glue(). Also add do {} while(0) wrapping and fix >>> semicolon use while at it. >>> >>> Signed-off-by: Blue Swirl <blauwirbel@gmail.com> >> >> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> >> >> In fact, this is not merely an improvement, and not OpenBSD specific. >> This is a vital bugfix for all big-endian hosts. >> >> Please apply. > > Suggest to reword the commit message accordingly then. I don't care about the commit message, just get this patch in ASAP please. The current tree is broken on s390 and ppc. Alex
Alexander Graf <agraf@suse.de> writes: > On 17.01.2013, at 08:50, Markus Armbruster wrote: > >> David Gibson <david@gibson.dropbear.id.au> writes: >> >>> On Sun, Jan 13, 2013 at 04:35:41PM +0000, Blue Swirl wrote: >>>> OpenBSD system compiler (gcc 4.2.1) has problems with concatenation >>>> of macro arguments in macro functions: >>>> CC aes.o >>>> In file included from /src/qemu/include/qemu-common.h:126, >>>> from /src/qemu/aes.c:30: >>>> /src/qemu/include/qemu/bswap.h: In function 'leul_to_cpu': >>>> /src/qemu/include/qemu/bswap.h:461: warning: implicit declaration of function 'bswapHOST_LONG_BITS' >>>> /src/qemu/include/qemu/bswap.h:461: warning: nested extern declaration of 'bswapHOST_LONG_BITS' >>>> >>>> Function leul_to_cpu() is only used in kvm-all.c, so the warnings >>>> are not fatal on OpenBSD without -Werror. >>>> >>>> Fix by applying glue(). Also add do {} while(0) wrapping and fix >>>> semicolon use while at it. >>>> >>>> Signed-off-by: Blue Swirl <blauwirbel@gmail.com> >>> >>> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> >>> >>> In fact, this is not merely an improvement, and not OpenBSD specific. >>> This is a vital bugfix for all big-endian hosts. >>> >>> Please apply. >> >> Suggest to reword the commit message accordingly then. > > I don't care about the commit message, just get this patch in ASAP > please. The current tree is broken on s390 and ppc. I think Blue's perfectly capable to amend this commit message without noticeable loss in commit speed.
Applied. Thanks. Regards, Anthony Liguori
diff --git a/include/qemu/bswap.h b/include/qemu/bswap.h index be9b035..e6d4798 100644 --- a/include/qemu/bswap.h +++ b/include/qemu/bswap.h @@ -72,45 +72,45 @@ static inline void bswap64s(uint64_t *s) #if defined(HOST_WORDS_BIGENDIAN) #define be_bswap(v, size) (v) -#define le_bswap(v, size) bswap ## size(v) +#define le_bswap(v, size) glue(bswap, size)(v) #define be_bswaps(v, size) -#define le_bswaps(p, size) *p = bswap ## size(*p); +#define le_bswaps(p, size) do { *p = glue(bswap, size)(*p); } while(0) #else #define le_bswap(v, size) (v) -#define be_bswap(v, size) bswap ## size(v) +#define be_bswap(v, size) glue(bswap, size)(v) #define le_bswaps(v, size) -#define be_bswaps(p, size) *p = bswap ## size(*p); +#define be_bswaps(p, size) do { *p = glue(bswap, size)(*p); } while(0) #endif #define CPU_CONVERT(endian, size, type)\ static inline type endian ## size ## _to_cpu(type v)\ {\ - return endian ## _bswap(v, size);\ + return glue(endian, _bswap)(v, size);\ }\ \ static inline type cpu_to_ ## endian ## size(type v)\ {\ - return endian ## _bswap(v, size);\ + return glue(endian, _bswap)(v, size);\ }\ \ static inline void endian ## size ## _to_cpus(type *p)\ {\ - endian ## _bswaps(p, size)\ + glue(endian, _bswaps)(p, size);\ }\ \ static inline void cpu_to_ ## endian ## size ## s(type *p)\ {\ - endian ## _bswaps(p, size)\ + glue(endian, _bswaps)(p, size);\ }\ \ static inline type endian ## size ## _to_cpup(const type *p)\ {\ - return endian ## size ## _to_cpu(*p);\ + return glue(glue(endian, size), _to_cpu)(*p);\ }\ \ static inline void cpu_to_ ## endian ## size ## w(type *p, type v)\ {\ - *p = cpu_to_ ## endian ## size(v);\ + *p = glue(glue(cpu_to_, endian), size)(v);\ } CPU_CONVERT(be, 16, uint16_t)
OpenBSD system compiler (gcc 4.2.1) has problems with concatenation of macro arguments in macro functions: CC aes.o In file included from /src/qemu/include/qemu-common.h:126, from /src/qemu/aes.c:30: /src/qemu/include/qemu/bswap.h: In function 'leul_to_cpu': /src/qemu/include/qemu/bswap.h:461: warning: implicit declaration of function 'bswapHOST_LONG_BITS' /src/qemu/include/qemu/bswap.h:461: warning: nested extern declaration of 'bswapHOST_LONG_BITS' Function leul_to_cpu() is only used in kvm-all.c, so the warnings are not fatal on OpenBSD without -Werror. Fix by applying glue(). Also add do {} while(0) wrapping and fix semicolon use while at it. Signed-off-by: Blue Swirl <blauwirbel@gmail.com> --- include/qemu/bswap.h | 20 ++++++++++---------- 1 files changed, 10 insertions(+), 10 deletions(-)