about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog15
-rw-r--r--NEWS2
-rw-r--r--conform/Makefile4
-rw-r--r--include/stdio.h5
-rw-r--r--libio/memstream.c5
-rw-r--r--misc/syslog.c2
-rw-r--r--posix/getopt.c2
7 files changed, 25 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 19f45eb99d..085d12ccd6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,20 @@
 2015-06-05  Joseph Myers  <joseph@codesourcery.com>
 
+	[BZ #18498]
+	* libio/memstream.c (open_memstream): Rename to __open_memstream
+	and define as weak alias of __open_memstream.
+	* include/stdio.h (__open_memstream): Declare.  Use
+	libc_hidden_proto.
+	(open_memstream): Don't use libc_hidden_proto.
+	* misc/syslog.c (__vsyslog_chk): Call __open_memstream instead of
+	open_memstream.
+	* posix/getopt.c (_getopt_internal_r): Likewise.
+	* conform/Makefile (test-xfail-XPG3/stdio.h/linknamespace): Remove
+	variable.
+	(test-xfail-XPG4/stdio.h/linknamespace): Likewise.
+	(test-xfail-UNIX98/stdio.h/linknamespace): Likewise.
+	(test-xfail-XOPEN2K/unistd.h/linknamespace): Likewise.
+
 	[BZ #18496]
 	* posix/regex_internal.c (build_wcs_upper_buffer): Call __wcrtomb
 	instead of wcrtomb.
diff --git a/NEWS b/NEWS
index 3fc313c8ba..881e61c4f2 100644
--- a/NEWS
+++ b/NEWS
@@ -20,7 +20,7 @@ Version 2.22
   18111, 18116, 18125, 18128, 18138, 18185, 18196, 18197, 18206, 18210,
   18211, 18217, 18220, 18221, 18234, 18244, 18247, 18287, 18319, 18324,
   18333, 18346, 18397, 18409, 18410, 18412, 18418, 18422, 18434, 18444,
-  18468, 18469, 18470, 18483, 18495, 18496.
+  18468, 18469, 18470, 18483, 18495, 18496, 18498.
 
 * Cache information can be queried via sysconf() function on s390 e.g. with
   _SC_LEVEL1_ICACHE_SIZE as argument.
diff --git a/conform/Makefile b/conform/Makefile
index 662ea96d16..943a1967fb 100644
--- a/conform/Makefile
+++ b/conform/Makefile
@@ -347,14 +347,12 @@ test-xfail-XOPEN2K8/ndbm.h/linknamespace = yes
 # Unsorted expected failures.
 test-xfail-XPG3/glob.h/linknamespace = yes
 test-xfail-XPG3/regex.h/linknamespace = yes
-test-xfail-XPG3/stdio.h/linknamespace = yes
 test-xfail-XPG3/unistd.h/linknamespace = yes
 test-xfail-XPG3/wordexp.h/linknamespace = yes
 test-xfail-XPG4/fmtmsg.h/linknamespace = yes
 test-xfail-XPG4/glob.h/linknamespace = yes
 test-xfail-XPG4/netdb.h/linknamespace = yes
 test-xfail-XPG4/regex.h/linknamespace = yes
-test-xfail-XPG4/stdio.h/linknamespace = yes
 test-xfail-XPG4/stdlib.h/linknamespace = yes
 test-xfail-XPG4/syslog.h/linknamespace = yes
 test-xfail-XPG4/unistd.h/linknamespace = yes
@@ -367,7 +365,6 @@ test-xfail-POSIX/unistd.h/linknamespace = yes
 test-xfail-UNIX98/fmtmsg.h/linknamespace = yes
 test-xfail-UNIX98/mqueue.h/linknamespace = yes
 test-xfail-UNIX98/netdb.h/linknamespace = yes
-test-xfail-UNIX98/stdio.h/linknamespace = yes
 test-xfail-UNIX98/stdlib.h/linknamespace = yes
 test-xfail-UNIX98/syslog.h/linknamespace = yes
 test-xfail-UNIX98/unistd.h/linknamespace = yes
@@ -376,7 +373,6 @@ test-xfail-XOPEN2K/fmtmsg.h/linknamespace = yes
 test-xfail-XOPEN2K/netdb.h/linknamespace = yes
 test-xfail-XOPEN2K/stdlib.h/linknamespace = yes
 test-xfail-XOPEN2K/syslog.h/linknamespace = yes
-test-xfail-XOPEN2K/unistd.h/linknamespace = yes
 test-xfail-POSIX2008/grp.h/linknamespace = yes
 test-xfail-POSIX2008/netdb.h/linknamespace = yes
 test-xfail-POSIX2008/semaphore.h/linknamespace = yes
diff --git a/include/stdio.h b/include/stdio.h
index 043b2b56bc..78bd3c471b 100644
--- a/include/stdio.h
+++ b/include/stdio.h
@@ -160,7 +160,10 @@ extern __typeof (fgets_unlocked) __fgets_unlocked;
 libc_hidden_proto (__fgets_unlocked)
 libc_hidden_proto (fputs_unlocked)
 libc_hidden_proto (fmemopen)
-libc_hidden_proto (open_memstream)
+/* The prototype needs repeating instead of using __typeof to use
+   __THROW in C++.  */
+extern FILE *__open_memstream (char **, size_t *) __THROW __wur;
+libc_hidden_proto (__open_memstream)
 libc_hidden_proto (__libc_fatal)
 libc_hidden_proto (__vsprintf_chk)
 libc_hidden_proto (__vsnprintf_chk)
diff --git a/libio/memstream.c b/libio/memstream.c
index 81bfe6dd67..84742d1236 100644
--- a/libio/memstream.c
+++ b/libio/memstream.c
@@ -61,7 +61,7 @@ static const struct _IO_jump_t _IO_mem_jumps =
    necessary.  *BUFLOC and *SIZELOC are updated with the buffer's location
    and the number of characters written on fflush or fclose.  */
 _IO_FILE *
-open_memstream (bufloc, sizeloc)
+__open_memstream (bufloc, sizeloc)
      char **bufloc;
      _IO_size_t *sizeloc;
 {
@@ -100,7 +100,8 @@ open_memstream (bufloc, sizeloc)
 
   return (_IO_FILE *) &new_f->fp._sf._sbf;
 }
-libc_hidden_def (open_memstream)
+libc_hidden_def (__open_memstream)
+weak_alias (__open_memstream, open_memstream)
 
 
 static int
diff --git a/misc/syslog.c b/misc/syslog.c
index 70daa9e1f3..23a4f7b81d 100644
--- a/misc/syslog.c
+++ b/misc/syslog.c
@@ -164,7 +164,7 @@ __vsyslog_chk(int pri, int flag, const char *fmt, va_list ap)
 		pri |= LogFacility;
 
 	/* Build the message in a memory-buffer stream.  */
-	f = open_memstream (&buf, &bufsize);
+	f = __open_memstream (&buf, &bufsize);
 	if (f == NULL)
 	  {
 	    /* We cannot get a stream.  There is not much we can do but
diff --git a/posix/getopt.c b/posix/getopt.c
index 841392e5bb..d30530f939 100644
--- a/posix/getopt.c
+++ b/posix/getopt.c
@@ -585,7 +585,7 @@ _getopt_internal_r (int argc, char *const *argv, const char *optstring,
 	      char *buf = NULL;
 	      size_t buflen = 0;
 
-	      FILE *fp = open_memstream (&buf, &buflen);
+	      FILE *fp = __open_memstream (&buf, &buflen);
 	      if (fp != NULL)
 		{
 		  fprintf (fp,