[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] xenpaging: remove XOPEN_SOURCE



2011/12/13 Laszlo Ersek <lersek@xxxxxxxxxx>:
> On 12/13/11 11:02, Ian Campbell wrote:
>>
>> On Tue, 2011-12-13 at 09:30 +0000, Roger Pau Monne wrote:
>>>
>>> # HG changeset patch
>>> # User Roger Pau Monne<roger.pau@xxxxxxxxxxxxx>
>>> # Date 1323768129 -3600
>>> # Node ID 7697ee23b08b8eaca9aee4f6b79cf550a490bef7
>>> # Parent Â8a84f53376862427f254a017cb52c928dbdd3d32
>>> xenpaging: remove XOPEN_SOURCE
>>>
>>> The XOPEN_SOURCE define was breaking the compilation under NetBSD.
>>
>>
>> How?

If _XOPEN_SOUCE is defined, then the compiler cannot find the
prototype of asprintf and it throws a warning that stops the
compilation.

This is because the prototype of asprintf is declared as follows under NetBSD:

#if defined(_NETBSD_SOURCE)
[...]
int      asprintf(char ** __restrict, const char * __restrict, ...)
                __printflike(2, 3);
[...]
#endif

And _NETBSD_SOURCE is defined if:

#if !defined(_ANSI_SOURCE) && !defined(_POSIX_C_SOURCE) && \
    !defined(_XOPEN_SOURCE) && !defined(_NETBSD_SOURCE)
#define _NETBSD_SOURCE 1
#endif

Probably the asprintf prototype should be defined as:

#if defined(_NETBSD_SOURCE) || defined(_XOPEN_SOURCE)
[...]
int      asprintf(char ** __restrict, const char * __restrict, ...)
                __printflike(2, 3);
>
> Indeed. Both the commit that added it [1] [2] and this patch provide very
> little useful info in their respective messages. It's interesting because it
> could point out a SUSv3 incompatibility in in NetBSD.
>
>
>>> I've removed it becasue it is not necessary (at least under NetBSD).
>>> If it is necessary for Linux, we can add a ifdef conditional to remove
>>> this only under NetBSD.
>>
>>
>> Removing it seems to not break Linux, at least for me.
>
>
> The stuff made visible by _GNU_SOURCE (with glibc) includes everything
> _XOPEN_SOURCE makes visible [3]. [4] introduced it because of asprintf().

If it's not necessary I think it's best to remove the definition, to
avoid having a lot of useless defines all over the code.

> Laszlo
>
> [1]
> http://old-list-archives.xen.org/archives/html/xen-devel/2010-08/msg01110.html
> [2] http://xenbits.xensource.com/hg/xen-unstable.hg/rev/22023
> [3]
> http://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html#index-g_t_005fGNU_005fSOURCE-51
> [4] http://xenbits.xensource.com/hg/xen-unstable.hg/rev/24223
>
>
>
>>
>>> Signed-off-by: Roger Pau Monne<roger.pau@xxxxxxxxxxxxx>
>>
>>
>> Acked-by: Ian Campbell<ian.campbell@xxxxxxxxxx>
>>>
>>>
>>> diff -r 8a84f5337686 -r 7697ee23b08b tools/xenpaging/xenpaging.c
>>> --- a/tools/xenpaging/xenpaging.c    Tue Dec 13 09:49:55 2011 +0100
>>> +++ b/tools/xenpaging/xenpaging.c    Tue Dec 13 10:22:09 2011 +0100
>>> @@ -18,7 +18,6 @@
>>> Â * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA Â02111-1307
>>> ÂUSA
>>> Â */
>>>
>>> -#define _XOPEN_SOURCE Â600
>>> Â#define _GNU_SOURCE
>>>
>>> Â#include<inttypes.h>
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.