From cf06a4e3579d834c3330184c4ff127c98bc00fcc Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Fri, 22 May 2015 17:09:36 +0000 Subject: Fix pathconf basename namespace (bug 18444). pathconf (sysdeps/unix/sysv/linux/pathconf.c) uses basename. But pathconf is in POSIX back to 1990 while basename is only reserved with external linkage in those standards including XPG functions. This patch fixes this namespace issue in the usual way, renaming basename to __basename and making it into a weak alias. Tested for x86_64 and x86 (testsuite, and that disassembly of installed shared libraries is unchanged by the patch). [BZ #18444] * string/basename.c (basename): Rename to __basename and define as weak alias of __basename. Use libc_hidden_weak. * include/string.h (__basename): Declare. Use libc_hidden_proto. * sysdeps/unix/sysv/linux/pathconf.c (distinguish_extX): Call __basename instead of basename. * conform/Makefile (test-xfail-POSIX2008/unistd.h/linknamespace): Remove variable. (test-xfail-XOPEN2K8/unistd.h/linknamespace): Likewise. --- string/basename.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'string') diff --git a/string/basename.c b/string/basename.c index 5052ebf4df..4caabca8f0 100644 --- a/string/basename.c +++ b/string/basename.c @@ -19,9 +19,11 @@ #include char * -basename (const char *filename) +__basename (const char *filename) { char *p = strrchr (filename, '/'); return p ? p + 1 : (char *) filename; } -libc_hidden_def (basename) +libc_hidden_def (__basename) +weak_alias (__basename, basename) +libc_hidden_weak (basename) -- cgit v1.2.1