diff options
author | Joseph Myers <joseph@codesourcery.com> | 2016-04-28 22:01:04 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2016-04-28 22:01:04 +0000 |
commit | a7657f3012765b9c2d80c7387d487fc5156d3bc2 (patch) | |
tree | 7539c948fc051687164f87bd62388afa12316b8a | |
parent | 022d239b5d20df6c0b1ee05d527b94b671a746fb (diff) | |
download | glibc-a7657f3012765b9c2d80c7387d487fc5156d3bc2.tar.gz glibc-a7657f3012765b9c2d80c7387d487fc5156d3bc2.tar.xz glibc-a7657f3012765b9c2d80c7387d487fc5156d3bc2.zip |
Fix stdio.h namespace for pre-threads POSIX (bug 20014).
stdio.h declares flockfile, ftrylockfile, funlockfile, getc_unlocked, getchar_unlocked, putc_unlocked and putchar_unlocked if __USE_POSIX, with comments "These are defined in POSIX.1:1996.". But __USE_POSIX is actually POSIX.1:1990, and these functions should not be declared for 1990 / 1992 / 1993 POSIX, XPG3 or XPG4. This patch fixes stdio.h to use __USE_POSIX199506 instead for those conditionals, as that is the correct conditional for the version of POSIX that introduced threads, and with threads those functions. Tested for x86_64 and x86 (testsuite, and that installed shared libraries are unchanged by the patch). [BZ #20014] * libio/stdio.h (getc_unlocked): Declare if [__USE_POSIX199506], not [__USE_POSIX]. (getchar_unlocked): Likewise. (putc_unlocked): Likewise. (putchar_unlocked): Likewise. (flockfile): Likewise. (ftrylockfile): Likewise. (funlockfile): Likewise. * conform/Makefile (test-xfail-XPG3/stdio.h/conform): Remove variable. (test-xfail-XPG4/stdio.h/conform): Likewise.
-rw-r--r-- | ChangeLog | 13 | ||||
-rw-r--r-- | conform/Makefile | 2 | ||||
-rw-r--r-- | libio/stdio.h | 6 |
3 files changed, 16 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog index 39bb84a2b3..260bf998d8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,18 @@ 2016-04-28 Joseph Myers <joseph@codesourcery.com> + [BZ #20014] + * libio/stdio.h (getc_unlocked): Declare if [__USE_POSIX199506], + not [__USE_POSIX]. + (getchar_unlocked): Likewise. + (putc_unlocked): Likewise. + (putchar_unlocked): Likewise. + (flockfile): Likewise. + (ftrylockfile): Likewise. + (funlockfile): Likewise. + * conform/Makefile (test-xfail-XPG3/stdio.h/conform): Remove + variable. + (test-xfail-XPG4/stdio.h/conform): Likewise. + * conform/data/langinfo.h-data [XPG3 || XPG4 || UNIX98] (YESSTR): Expect constant. [XPG3 || XPG4 || UNIX98] (NOSTR): Likewise. diff --git a/conform/Makefile b/conform/Makefile index 06c4ff36f4..f2aa1771b6 100644 --- a/conform/Makefile +++ b/conform/Makefile @@ -169,7 +169,6 @@ test-xfail-XPG3/limits.h/conform = yes test-xfail-XPG3/pwd.h/conform = yes test-xfail-XPG3/search.h/conform = yes test-xfail-XPG3/signal.h/conform = yes -test-xfail-XPG3/stdio.h/conform = yes test-xfail-XPG3/stdlib.h/conform = yes test-xfail-XPG3/string.h/conform = yes test-xfail-XPG3/sys/stat.h/conform = yes @@ -183,7 +182,6 @@ test-xfail-XPG4/fcntl.h/conform = yes test-xfail-XPG4/netdb.h/conform = yes test-xfail-XPG4/netinet/in.h/conform = yes test-xfail-XPG4/signal.h/conform = yes -test-xfail-XPG4/stdio.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 diff --git a/libio/stdio.h b/libio/stdio.h index 712b9949e1..4511c3cc69 100644 --- a/libio/stdio.h +++ b/libio/stdio.h @@ -544,7 +544,7 @@ __END_NAMESPACE_STD optimization for it. */ #define getc(_fp) _IO_getc (_fp) -#ifdef __USE_POSIX +#ifdef __USE_POSIX199506 /* These are defined in POSIX.1:1996. These functions are possible cancellation points and therefore not @@ -596,7 +596,7 @@ __END_NAMESPACE_STD extern int fputc_unlocked (int __c, FILE *__stream); #endif /* Use MISC. */ -#ifdef __USE_POSIX +#ifdef __USE_POSIX199506 /* These are defined in POSIX.1:1996. These functions are possible cancellation points and therefore not @@ -907,7 +907,7 @@ extern int obstack_vprintf (struct obstack *__restrict __obstack, #endif /* Use GNU. */ -#ifdef __USE_POSIX +#ifdef __USE_POSIX199506 /* These are defined in POSIX.1:1996. */ /* Acquire ownership of STREAM. */ |