aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2015-06-17 20:10:50 +0000
committerJoseph Myers <joseph@codesourcery.com>2015-06-17 20:10:50 +0000
commitbe7dc2b77e368daad6f81e272fc41f1b86166240 (patch)
tree5cb0cc1d4c59e767c291a629aa4d35a9fd3688a3
parenta97e5e25576cb5e207b1e49f1eb4e52e6354daa7 (diff)
downloadglibc-be7dc2b77e368daad6f81e272fc41f1b86166240.zip
glibc-be7dc2b77e368daad6f81e272fc41f1b86166240.tar.gz
glibc-be7dc2b77e368daad6f81e272fc41f1b86166240.tar.bz2
Fix syslog dprintf namespace (bug 18534).
syslog functions bring in references to dprintf, which wasn't added to POSIX until the 2008 edition and so isn't in various standards containing the syslog functions. This patch fixes this by making dprintf into a weak alias of __dprintf and using __dprintf as appropriate. Tested for x86_64 and x86 (testsuite, and that installed stripped shared libraries are unchanged by the patch). [BZ #18534] * stdio-common/dprintf.c (__dprintf): Use libc_hidden_def. (dprintf): Define as a weak alias of __dprintf, not a strong alias. * include/stdio.h (__dprintf): Declare. Use libc_hidden_proto. * misc/syslog.c (__vsyslog_chk): Call __dprintf instead of dprintf. * conform/Makefile (test-xfail-XPG4/syslog.h/linknamespace): Remove variable. (test-xfail-UNIX98/syslog.h/linknamespace): Likewise. (test-xfail-XOPEN2K/syslog.h/linknamespace): Likewise.
-rw-r--r--ChangeLog12
-rw-r--r--NEWS2
-rw-r--r--conform/Makefile3
-rw-r--r--include/stdio.h3
-rw-r--r--misc/syslog.c2
-rw-r--r--stdio-common/dprintf.c3
6 files changed, 19 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 3d03d20..abc52cc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
2015-06-17 Joseph Myers <joseph@codesourcery.com>
+ [BZ #18534]
+ * stdio-common/dprintf.c (__dprintf): Use libc_hidden_def.
+ (dprintf): Define as a weak alias of __dprintf, not a strong
+ alias.
+ * include/stdio.h (__dprintf): Declare. Use libc_hidden_proto.
+ * misc/syslog.c (__vsyslog_chk): Call __dprintf instead of
+ dprintf.
+ * conform/Makefile (test-xfail-XPG4/syslog.h/linknamespace):
+ Remove variable.
+ (test-xfail-UNIX98/syslog.h/linknamespace): Likewise.
+ (test-xfail-XOPEN2K/syslog.h/linknamespace): Likewise.
+
[BZ #18533]
* misc/syslog.c (vsyslog): Define as a weak alias of __vsyslog,
not a strong alias.
diff --git a/NEWS b/NEWS
index ad388ad..a0ebe58 100644
--- a/NEWS
+++ b/NEWS
@@ -22,7 +22,7 @@ Version 2.22
18324, 18333, 18346, 18397, 18409, 18410, 18412, 18418, 18422, 18434,
18444, 18468, 18469, 18470, 18479, 18483, 18495, 18496, 18497, 18498,
18507, 18512, 18519, 18520, 18522, 18527, 18528, 18529, 18530, 18532,
- 18533.
+ 18533, 18534.
* 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 567046f..9347b0f 100644
--- a/conform/Makefile
+++ b/conform/Makefile
@@ -346,16 +346,13 @@ test-xfail-XOPEN2K8/ndbm.h/linknamespace = yes
# Unsorted expected failures.
test-xfail-XPG3/unistd.h/linknamespace = yes
test-xfail-XPG4/fmtmsg.h/linknamespace = yes
-test-xfail-XPG4/syslog.h/linknamespace = yes
test-xfail-XPG4/unistd.h/linknamespace = yes
test-xfail-POSIX/mqueue.h/linknamespace = yes
test-xfail-POSIX/semaphore.h/linknamespace = yes
test-xfail-UNIX98/fmtmsg.h/linknamespace = yes
test-xfail-UNIX98/mqueue.h/linknamespace = yes
-test-xfail-UNIX98/syslog.h/linknamespace = yes
test-xfail-UNIX98/unistd.h/linknamespace = yes
test-xfail-UNIX98/wchar.h/linknamespace = yes
test-xfail-XOPEN2K/fmtmsg.h/linknamespace = yes
-test-xfail-XOPEN2K/syslog.h/linknamespace = yes
test-xfail-POSIX2008/semaphore.h/linknamespace = yes
test-xfail-XOPEN2K8/fmtmsg.h/linknamespace = yes
diff --git a/include/stdio.h b/include/stdio.h
index 6ae70a3..9cd324b 100644
--- a/include/stdio.h
+++ b/include/stdio.h
@@ -135,6 +135,9 @@ extern int _IO_new_fgetpos (_IO_FILE *, _IO_fpos_t *);
# endif
libc_hidden_proto (dprintf)
+extern __typeof (dprintf) __dprintf
+ __attribute__ ((__format__ (__printf__, 2, 3)));
+libc_hidden_proto (__dprintf)
libc_hidden_proto (fprintf)
libc_hidden_proto (vfprintf)
libc_hidden_proto (sprintf)
diff --git a/misc/syslog.c b/misc/syslog.c
index 35cae6c..9dd4cde 100644
--- a/misc/syslog.c
+++ b/misc/syslog.c
@@ -298,7 +298,7 @@ __vsyslog_chk(int pri, int flag, const char *fmt, va_list ap)
if (LogStat & LOG_CONS &&
(fd = __open(_PATH_CONSOLE, O_WRONLY|O_NOCTTY, 0)) >= 0)
{
- dprintf (fd, "%s\r\n", buf + msgoff);
+ __dprintf (fd, "%s\r\n", buf + msgoff);
(void)__close(fd);
}
}
diff --git a/stdio-common/dprintf.c b/stdio-common/dprintf.c
index 3221cf0..5a7011d 100644
--- a/stdio-common/dprintf.c
+++ b/stdio-common/dprintf.c
@@ -35,5 +35,6 @@ __dprintf (int d, const char *format, ...)
return done;
}
+libc_hidden_def (__dprintf)
ldbl_hidden_def (__dprintf, dprintf)
-ldbl_strong_alias (__dprintf, dprintf)
+ldbl_weak_alias (__dprintf, dprintf)