about summary refs log tree commit diff
path: root/include/ttyent.h
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2015-06-17 20:21:19 +0000
committerJoseph Myers <joseph@codesourcery.com>2015-06-17 20:21:19 +0000
commitabccad04b4172d552dbdae948c0e567ba266ad76 (patch)
tree2de82b0b360a2a1003e1fe0e92c00fef92e8d79f /include/ttyent.h
parent0595c98494c25f8eaa1a3298e8fa032ad5e4405e (diff)
downloadglibc-abccad04b4172d552dbdae948c0e567ba266ad76.tar.gz
glibc-abccad04b4172d552dbdae948c0e567ba266ad76.tar.xz
glibc-abccad04b4172d552dbdae948c0e567ba266ad76.zip
Fix ttyslot namespace (bug 18547).
ttyslot (XPG4) calls the non-XPG4 functions endttyent, getttyent and
setttyent, which in turn bring in references to fgets_unlocked and
getttynam.  This patch fixes this by making these functions into weak
aliases and calling the __* names as needed.

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

	[BZ #18547]
	* misc/getttyent.c (getttynam): Rename to __getttynam and define
	as weak alias of __getttynam.  Use prototype function definition.
	Call __setttyent, __getttyent and __endttyent instead of
	setttyent, getttyent and endttyent.
	(getttyent): Rename to __getttyent and define as weak alias of
	__getttyent.  Call __setttyent instead of setttyent.  Call
	__fgets_unlocked instead of fgets_unlocked.
	(setttyent): Rename to __setttyent and define as weak alias of
	__setttyent.
	(endttyent): Rename to __endttyent and define as weak alias of
	__endttyent.
	* include/ttyent.h (__getttyent): Declare.  Use libc_hidden_proto.
	(__setttyent): Likewise.
	(__endttyent): Likewise.
	(getttyent): Don't use libc_hidden_proto.
	(setttyent): Likewise.
	(endttyent): Likewise.
	* misc/ttyslot.c (ttyslot): Call __setttyent, __getttyent and
	__endttyent instead of setttyent, getttyent and endttyent.
	* conform/Makefile (test-xfail-XPG4/unistd.h/linknamespace):
	Remove variable.
Diffstat (limited to 'include/ttyent.h')
-rw-r--r--include/ttyent.h9
1 files changed, 6 insertions, 3 deletions
diff --git a/include/ttyent.h b/include/ttyent.h
index e510df8260..81e52116e5 100644
--- a/include/ttyent.h
+++ b/include/ttyent.h
@@ -1,8 +1,11 @@
 #ifndef	_TTYENT_H
 # include <misc/ttyent.h>
 
-libc_hidden_proto (getttyent)
-libc_hidden_proto (setttyent)
-libc_hidden_proto (endttyent)
+extern __typeof (getttyent) __getttyent __THROW;
+libc_hidden_proto (__getttyent)
+extern __typeof (setttyent) __setttyent __THROW;
+libc_hidden_proto (__setttyent)
+extern __typeof (endttyent) __endttyent __THROW;
+libc_hidden_proto (__endttyent)
 
 #endif