[oe] [meta-oe][PATCH] xterm: Fix latent issue found with musl
Adrian Bunk
bunk at stusta.de
Sat Dec 14 14:20:59 UTC 2019
On Fri, Dec 13, 2019 at 09:55:49PM -0800, Khem Raj wrote:
> On 12/13/19 2:58 PM, Adrian Bunk wrote:
> > On Fri, Dec 13, 2019 at 01:55:33PM -0800, Khem Raj wrote:
> > > On Thu, Dec 12, 2019 at 8:37 PM Adrian Bunk <bunk at stusta.de> wrote:
> > > > On Thu, Dec 12, 2019 at 12:22:52PM -0800, Khem Raj wrote:
> > > ...
> > > > > +_POSIX_SOURCE is app-defined not system
> > > >
> > > > This is true for musl, not for glibc.
> > > >
> > > > The handling of _POSIX_SOURCE and _POSIX_VERSION differs between musl
> > > > and glibc due to glibc supporting older POSIX versions, and glibc also
> > > > supporting developers of portable code to select some specific older
> > > > POSIX version.
> > > >
> > > No thats not right.
> > > _POSIX_SOURCE (like all FTMs) is
> > > defined by the application to request a feature/standards profile
> > > it's not libc telling you "this is posix" or anything like that.
> >
> > It is also defined when _POSIX_C_SOURCE is defined, or _GNU_SOURCE,
> > or when the default non-strict gcc mode is used.
> >
> > The latter means that it is in practice nearly always defined when the
> > libc supports applications written against older versions of POSIX.
> >
> but these macros are not used in this case so its irrelevant here.
No macro has to be used, with gcc default settings _POSIX_SOURCE
is defined:
$ cat test.c
#include <unistd.h>
int tmp = _POSIX_SOURCE;
$ gcc -O2 -Wall -c test.c
$
musl is different, since it does not aim at fully supporting
applications that were written against an older version of
the POSIX standard.
> > > _POSIX_VERSION tells you that
> > > ...
> >
> > _POSIX_VERSION being defined tells you that you have unistd.h included.
> >
> > With glibc the value of _POSIX_VERSION depends on what feature/standards
> > profile the application has requested.
>
> I would not look into how glibc does something and call it standard.
I would not look into how musl does something and call it standard.
I checked what musl and glibc do and what the standard says.
> It guards these definitions by its internal defines ( prefixed with __) which
> is internal to a libc implementation, applications are not exposed to
> private namespace.
_POSIX_SOURCE is defined in POSIX.1-1990 and mentioned in later versions
of POSIX.
_POSIX_VERSION is defined in all(?) versions of POSIX.
cu
Adrian
More information about the Openembedded-devel
mailing list