Re: [Qemu-devel] [PATCH for-1.1? v2] slirp: Avoid statements without effect on Big Endian host
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Am 28.05.2012 13:47, schrieb Jan Kiszka: > On 2012-05-28 00:10, Peter Maydell wrote: >> On 27 May 2012 17:42, Andreas Färber >> wrote: >>> +# if defined(__APPLE__) +# undef NTOHL +# undef NTOHS +# >>> undef HTONL +# undef HTONS +# define NTOHL(d) do { } while >>> (0) +# define NTOHS(d) do { } while (0) +# define HTONL(d) do >>> { } while (0) +# define HTONS(d) do { } while (0) +# else >> >> We could just use this for everything, not just if __APPLE__, >> right? For big-endian the semantics we want are always "do >> nothing" so it's always OK to undef and redefine... That would >> save having a special case. > > Yes, please. On second thoughts my v2 was totally unnecessary and the solution flawed: The HTONS(x); warning is stemming from Apple's #define HTONS(d) (d) not from our #define HTONS(d) so we can just unconditionally #undef the existing definitions. That'll lead to unnecessary semicolons but not to warnings. Andreas - -- SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg -BEGIN PGP SIGNATURE- Version: GnuPG v2.0.18 (GNU/Linux) iQIcBAEBAgAGBQJPw5dgAAoJEPou0S0+fgE/wIkP/iu4ZQMR22nukCvtXANu2G7b QfnsM7w28zRS2y+RkpoQ4pdldD5o2PMVowUA8uGtscvO4o5wVn7/h+1z768NFMht KeOAic2h1cDUMQZp5DIhuMwXNHtzrYKejxyJSWzVFdpT+Za8tecQ4ge+iDXObdL0 u2a5RAfZU5oPSLZYdUWHkQhf6GayXRvkr/o6rBHKi0Y6S/Du9vlNUpMcANg1O85E LtraZbfikfKAtWxX+3+yTaNmpfylbYTnUQqHGEXcwMSr7TIDstoyf1kmQcrOacQa KwOGfW0psRsLQHSb9c3msezo4bFM/S+hyLj3Qg/Cr6Va/jENiyHUNALSymRCvlNw nVTZOPoNfYOYHnu7yR7xTjpIxngCL7vtdjw4RhJASVKZXQo1TzeAgi9Wx/LFGuFa Kifqr1wQwSUm+BESMAtJMKixobMscm1rkcwsITuAxTR+l6Cp6X3FcOG9xuHWbT52 IBToxsapwkRNdrb5HZxRIufOvTUq6j/zRfpODqiYe5IoHhF25w4Cvx5+eJ8X7Up6 2RrWRwtj6lmkBhezp2yiBZ/nIUVDcD8jywllla3PS52rjwJoFvRfAU9551yZPMkP sVhSdID9f9KzwzzUE8YfcCGaVFnOriJG5LikxqcRztp7nlKSPFQNA0DvTK3xTuez TzrCEwLr6wtBcdvG+6CK =0bsI -END PGP SIGNATURE-
Re: [Qemu-devel] [PATCH for-1.1? v2] slirp: Avoid statements without effect on Big Endian host
Am 28.05.2012 14:00, schrieb Peter Maydell: > On 28 May 2012 12:47, Jan Kiszka wrote: >> On 2012-05-28 00:10, Peter Maydell wrote: >>> On 27 May 2012 17:42, Andreas Färber wrote: +# if defined(__APPLE__) +# undef NTOHL +# undef NTOHS +# undef HTONL +# undef HTONS +# define NTOHL(d) do { } while (0) +# define NTOHS(d) do { } while (0) +# define HTONL(d) do { } while (0) +# define HTONS(d) do { } while (0) +# else >>> >>> We could just use this for everything, not just if __APPLE__, >>> right? For big-endian the semantics we want are always "do >>> nothing" so it's always OK to undef and redefine... >>> That would save having a special case. >> >> Yes, please. > > It occurred to me that you could also have the unconditional > #undefs outside the #ifdef HOST_WORDS_BIGENDIAN, but that > is starting to stray outside of the "simple fix for 1.1" > territory. For 1.2 I would suggest to go even further and drop these SLIRP-specific macros in favor of QEMU-wide available ones. static inline functions would've avoided the problem in the first place. Andreas -- SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
Re: [Qemu-devel] [PATCH for-1.1? v2] slirp: Avoid statements without effect on Big Endian host
On 28 May 2012 12:47, Jan Kiszka wrote: > On 2012-05-28 00:10, Peter Maydell wrote: >> On 27 May 2012 17:42, Andreas Färber wrote: >>> +# if defined(__APPLE__) >>> +# undef NTOHL >>> +# undef NTOHS >>> +# undef HTONL >>> +# undef HTONS >>> +# define NTOHL(d) do { } while (0) >>> +# define NTOHS(d) do { } while (0) >>> +# define HTONL(d) do { } while (0) >>> +# define HTONS(d) do { } while (0) >>> +# else >> >> We could just use this for everything, not just if __APPLE__, >> right? For big-endian the semantics we want are always "do >> nothing" so it's always OK to undef and redefine... >> That would save having a special case. > > Yes, please. It occurred to me that you could also have the unconditional #undefs outside the #ifdef HOST_WORDS_BIGENDIAN, but that is starting to stray outside of the "simple fix for 1.1" territory. -- PMM
Re: [Qemu-devel] [PATCH for-1.1? v2] slirp: Avoid statements without effect on Big Endian host
On 2012-05-28 00:10, Peter Maydell wrote: > On 27 May 2012 17:42, Andreas Färber wrote: >> +# if defined(__APPLE__) >> +# undef NTOHL >> +# undef NTOHS >> +# undef HTONL >> +# undef HTONS >> +# define NTOHL(d) do { } while (0) >> +# define NTOHS(d) do { } while (0) >> +# define HTONL(d) do { } while (0) >> +# define HTONS(d) do { } while (0) >> +# else > > We could just use this for everything, not just if __APPLE__, > right? For big-endian the semantics we want are always "do > nothing" so it's always OK to undef and redefine... > That would save having a special case. Yes, please. Jan signature.asc Description: OpenPGP digital signature
Re: [Qemu-devel] [PATCH for-1.1? v2] slirp: Avoid statements without effect on Big Endian host
On 27 May 2012 17:42, Andreas Färber wrote: > +# if defined(__APPLE__) > +# undef NTOHL > +# undef NTOHS > +# undef HTONL > +# undef HTONS > +# define NTOHL(d) do { } while (0) > +# define NTOHS(d) do { } while (0) > +# define HTONL(d) do { } while (0) > +# define HTONS(d) do { } while (0) > +# else We could just use this for everything, not just if __APPLE__, right? For big-endian the semantics we want are always "do nothing" so it's always OK to undef and redefine... That would save having a special case. -- PMM