about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2016-05-17 15:48:29 +0000
committerJoseph Myers <joseph@codesourcery.com>2016-05-17 15:48:29 +0000
commitb098852ac2664e7857387c2071439e1473e6e899 (patch)
tree0decf253e2c4740ed3bea477ff966e2e7542f1af
parent4242d9683fef6e618b80ec939adc37ff25cd2d79 (diff)
downloadglibc-b098852ac2664e7857387c2071439e1473e6e899.tar.gz
glibc-b098852ac2664e7857387c2071439e1473e6e899.tar.xz
glibc-b098852ac2664e7857387c2071439e1473e6e899.zip
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.
-rw-r--r--ChangeLog6
-rw-r--r--conform/Makefile1
-rw-r--r--stdlib/stdlib.h2
3 files changed, 7 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index ead0766e30..7d38ded1b7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/conform/Makefile b/conform/Makefile
index ab9da786d9..8e9ad85772 100644
--- a/conform/Makefile
+++ b/conform/Makefile
@@ -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
diff --git a/stdlib/stdlib.h b/stdlib/stdlib.h
index 5c0c982ccf..ad9c6c8904 100644
--- a/stdlib/stdlib.h
+++ b/stdlib/stdlib.h
@@ -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