This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Fix sys/time.h timespec namespace (bug 20041)
- From: Adhemerval Zanella <adhemerval dot zanella at linaro dot org>
- To: libc-alpha at sourceware dot org
- Date: Tue, 3 May 2016 14:22:58 -0300
- Subject: Re: Fix sys/time.h timespec namespace (bug 20041)
- Authentication-results: sourceware.org; auth=none
- References: <alpine dot DEB dot 2 dot 20 dot 1605031649480 dot 7094 at digraph dot polyomino dot org dot uk>
LGTM.
On 03/05/2016 13:50, Joseph Myers wrote:
> For UNIX98 and older standards, sys/time.h should not define struct
> timespec, but does so via the inclusion of sys/select.h (which is a
> new header in the 2001 edition of POSIX, and defines struct timespec
> because of the declaration of pselect, a new function in the 2001
> edition of POSIX). In turn, this affects some other headers that
> themselves include sys/time.h.
>
> This patch fixes this by conditioning the __need_timespec definition
> in sys/select.h on __USE_XOPEN2K, the same condition used there for
> the declaration of pselect (this has no effect on direct uses of
> sys/select.h with feature test macros for any standard that includes
> that header, since such standards result in __USE_XOPEN2K being
> defined).
>
> Tested for x86_64 and x86 (testsuite, and that installed stripped
> shared libraries are unchanged by the patch).
>
> 2016-05-03 Joseph Myers <joseph@codesourcery.com>
>
> {BZ #20041]
Typo here ({ should be [).
> * misc/sys/select.h (__need_timespec): Only define if
> [__USE_XOPEN2K].
> * conform/Makefile (test-xfail-XPG4/sys/time.h/conform): Remove
> variable.
> (test-xfail-XPG4/utmpx.h/conform): Likewise.
> (test-xfail-UNIX98/sys/time.h/conform): Likewise.
> (test-xfail-UNIX98/utmpx.h/conform): Likewise.
>
> diff --git a/conform/Makefile b/conform/Makefile
> index 55cada5..d5273c1 100644
> --- a/conform/Makefile
> +++ b/conform/Makefile
> @@ -184,24 +184,20 @@ test-xfail-XPG4/netinet/in.h/conform = yes
> test-xfail-XPG4/signal.h/conform = yes
> test-xfail-XPG4/stdlib.h/conform = yes
> test-xfail-XPG4/sys/stat.h/conform = yes
> -test-xfail-XPG4/sys/time.h/conform = yes
> test-xfail-XPG4/sys/types.h/conform = yes
> test-xfail-XPG4/sys/wait.h/conform = yes
> test-xfail-XPG4/termios.h/conform = yes
> test-xfail-XPG4/ucontext.h/conform = yes
> test-xfail-XPG4/unistd.h/conform = yes
> -test-xfail-XPG4/utmpx.h/conform = yes
> test-xfail-POSIX/sys/wait.h/conform = yes
> test-xfail-UNIX98/arpa/inet.h/conform = yes
> test-xfail-UNIX98/netdb.h/conform = yes
> test-xfail-UNIX98/netinet/in.h/conform = yes
> test-xfail-UNIX98/signal.h/conform = yes
> test-xfail-UNIX98/stdlib.h/conform = yes
> -test-xfail-UNIX98/sys/time.h/conform = yes
> test-xfail-UNIX98/sys/wait.h/conform = yes
> test-xfail-UNIX98/ucontext.h/conform = yes
> test-xfail-UNIX98/unistd.h/conform = yes
> -test-xfail-UNIX98/utmpx.h/conform = yes
> test-xfail-XOPEN2K/semaphore.h/conform = yes
> test-xfail-XOPEN2K/signal.h/conform = yes
> test-xfail-XOPEN2K/sys/wait.h/conform = yes
> diff --git a/misc/sys/select.h b/misc/sys/select.h
> index b852dac..52dd94f 100644
> --- a/misc/sys/select.h
> +++ b/misc/sys/select.h
> @@ -39,7 +39,9 @@ typedef __sigset_t sigset_t;
>
> /* Get definition of timer specification structures. */
> #define __need_time_t
> -#define __need_timespec
> +#ifdef __USE_XOPEN2K
> +# define __need_timespec
> +#endif
> #include <time.h>
> #define __need_timeval
> #include <bits/time.h>
>