Fix stdlib.h rand_r namespace (bug 20074).

stdlib.h declares rand_r if __USE_POSIX; i.e., POSIX.1:1990.  But
rand_r was added along with threads, so the condition should be
__USE_POSIX199506.  This patch corrects the condition.

Tested for x86_64 and x86 (testsuite, and that installed stripped
shared libraries are unchanged by the patch).

	[BZ #20074]
	* stdlib/stdlib.h (rand_r): Declare if [__USE_POSIX199506], not if
	[__USE_POSIX].
	* conform/Makefile (test-xfail-XPG4/stdlib.h/conform): Remove
	variable.
This commit is contained in:
Joseph Myers 2016-05-17 15:48:29 +00:00
parent 4242d9683f
commit b098852ac2
3 changed files with 7 additions and 2 deletions

View file

@ -1,5 +1,11 @@
2016-05-17 Joseph Myers <joseph@codesourcery.com>
[BZ #20074]
* stdlib/stdlib.h (rand_r): Declare if [__USE_POSIX199506], not if
[__USE_POSIX].
* conform/Makefile (test-xfail-XPG4/stdlib.h/conform): Remove
variable.
[BZ #20051]
* posix/unistd.h [__USE_XOPEN_EXTENDED && !__USE_UNIX98]
(ttyslot): Do not declare.

View file

@ -174,7 +174,6 @@ test-xfail-XPG4/arpa/inet.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/stdlib.h/conform = yes
test-xfail-XPG4/sys/stat.h/conform = yes
test-xfail-XPG4/sys/wait.h/conform = yes
test-xfail-XPG4/ucontext.h/conform = yes

View file

@ -337,7 +337,7 @@ extern int rand (void) __THROW;
extern void srand (unsigned int __seed) __THROW;
__END_NAMESPACE_STD
#ifdef __USE_POSIX
#ifdef __USE_POSIX199506
/* Reentrant interface according to POSIX.1. */
extern int rand_r (unsigned int *__seed) __THROW;
#endif