Re: [Qemu-devel] [PATCH for-1.1? v2] slirp: Avoid statements without effect on Big Endian host

2012-05-28 Thread Andreas Färber
-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

2012-05-28 Thread Andreas Färber
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

2012-05-28 Thread 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.

-- PMM



Re: [Qemu-devel] [PATCH for-1.1? v2] slirp: Avoid statements without effect on Big Endian host

2012-05-28 Thread 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.

Jan




signature.asc
Description: OpenPGP digital signature


Re: [Qemu-devel] [PATCH for-1.1? v2] slirp: Avoid statements without effect on Big Endian host

2012-05-27 Thread Peter Maydell
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