Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
Joseph Myers committed Jun 17, 2015
1 parent a97e5e2 commit be7dc2b
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 6 deletions.
12 changes: 12 additions & 0 deletions 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.
Expand Down
2 changes: 1 addition & 1 deletion NEWS
Expand Up @@ -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.
Expand Down
3 changes: 0 additions & 3 deletions conform/Makefile
Expand Up @@ -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
3 changes: 3 additions & 0 deletions include/stdio.h
Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion misc/syslog.c
Expand Up @@ -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);
}
}
Expand Down
3 changes: 2 additions & 1 deletion stdio-common/dprintf.c
Expand Up @@ -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)

0 comments on commit be7dc2b

Please sign in to comment.