about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2014-12-16 18:31:31 +0000
committerJoseph Myers <joseph@codesourcery.com>2014-12-16 18:31:31 +0000
commit380292ba8b97c82a8ede3ed35f6a3c42b7b47466 (patch)
tree8fb260047cae35d5301e848906d1c145d5a736ad
parent9a44d530c464d081e925b1c1af2b8bbe6e7b3207 (diff)
downloadglibc-380292ba8b97c82a8ede3ed35f6a3c42b7b47466.tar.gz
glibc-380292ba8b97c82a8ede3ed35f6a3c42b7b47466.tar.xz
glibc-380292ba8b97c82a8ede3ed35f6a3c42b7b47466.zip
Fix x86_64 memrchr namespace (bug 17719).
On x86_64, memrchr (not a standard function) is defined as a strong
symbol, instead of a weak alias of __memrchr as on other
architectures.  This results in linknamespace test failures from the
use of __memrchr from dirname.  (Not a conformance issue because of
the mem* reservation, but contrary to glibc conventions.)  This patch
makes x86_64 follow other architectures by defining memrchr as a weak
alias.

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

	[BZ #17719]
	* sysdeps/x86_64/memrchr.S (memrchr): Rename to __memrchr and
	define as weak alias of __memrchr.
	(__memrchr): Do not define as strong alias of memrchr.
	* conform/Makefile (test-xfail-XPG4/libgen.h/linknamespace):
	Remove variable.
	(test-xfail-UNIX98/libgen.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/libgen.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/libgen.h/linknamespace): Likewise.
-rw-r--r--ChangeLog10
-rw-r--r--NEWS2
-rw-r--r--conform/Makefile4
-rw-r--r--sysdeps/x86_64/memrchr.S6
4 files changed, 14 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index eb60f80606..76a9849e77 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
 2014-12-16  Joseph Myers  <joseph@codesourcery.com>
 
+	[BZ #17719]
+	* sysdeps/x86_64/memrchr.S (memrchr): Rename to __memrchr and
+	define as weak alias of __memrchr.
+	(__memrchr): Do not define as strong alias of memrchr.
+	* conform/Makefile (test-xfail-XPG4/libgen.h/linknamespace):
+	Remove variable.
+	(test-xfail-UNIX98/libgen.h/linknamespace): Likewise.
+	(test-xfail-XOPEN2K/libgen.h/linknamespace): Likewise.
+	(test-xfail-XOPEN2K8/libgen.h/linknamespace): Likewise.
+
 	[BZ #17717]
 	* inet/if_index.c (if_nametoindex): Rename to __if_nametoindex and
 	define as weak alias of __if_nametoindex.  Use libc_hidden_weak.
diff --git a/NEWS b/NEWS
index 443475980a..c46f51ade3 100644
--- a/NEWS
+++ b/NEWS
@@ -14,7 +14,7 @@ Version 2.21
   17363, 17370, 17371, 17411, 17460, 17475, 17485, 17501, 17506, 17508,
   17522, 17555, 17570, 17571, 17572, 17573, 17574, 17581, 17582, 17583,
   17584, 17585, 17589, 17594, 17601, 17608, 17616, 17625, 17630, 17633,
-  17634, 17647, 17653, 17657, 17664, 17665, 17668, 17682, 17717.
+  17634, 17647, 17653, 17657, 17664, 17665, 17668, 17682, 17717, 17719.
 
 * CVE-2104-7817 The wordexp function could ignore the WRDE_NOCMD flag
   under certain input conditions resulting in the execution of a shell for
diff --git a/conform/Makefile b/conform/Makefile
index e0412de1a4..45a17fb525 100644
--- a/conform/Makefile
+++ b/conform/Makefile
@@ -359,7 +359,6 @@ test-xfail-XPG4/ctype.h/linknamespace = yes
 test-xfail-XPG4/fmtmsg.h/linknamespace = yes
 test-xfail-XPG4/fnmatch.h/linknamespace = yes
 test-xfail-XPG4/glob.h/linknamespace = yes
-test-xfail-XPG4/libgen.h/linknamespace = yes
 test-xfail-XPG4/netdb.h/linknamespace = yes
 test-xfail-XPG4/regex.h/linknamespace = yes
 test-xfail-XPG4/search.h/linknamespace = yes
@@ -383,7 +382,6 @@ test-xfail-UNIX98/ctype.h/linknamespace = yes
 test-xfail-UNIX98/fmtmsg.h/linknamespace = yes
 test-xfail-UNIX98/fnmatch.h/linknamespace = yes
 test-xfail-UNIX98/glob.h/linknamespace = yes
-test-xfail-UNIX98/libgen.h/linknamespace = yes
 test-xfail-UNIX98/mqueue.h/linknamespace = yes
 test-xfail-UNIX98/netdb.h/linknamespace = yes
 test-xfail-UNIX98/regex.h/linknamespace = yes
@@ -398,7 +396,6 @@ test-xfail-XOPEN2K/fcntl.h/linknamespace = yes
 test-xfail-XOPEN2K/fmtmsg.h/linknamespace = yes
 test-xfail-XOPEN2K/fnmatch.h/linknamespace = yes
 test-xfail-XOPEN2K/glob.h/linknamespace = yes
-test-xfail-XOPEN2K/libgen.h/linknamespace = yes
 test-xfail-XOPEN2K/mqueue.h/linknamespace = yes
 test-xfail-XOPEN2K/netdb.h/linknamespace = yes
 test-xfail-XOPEN2K/regex.h/linknamespace = yes
@@ -425,7 +422,6 @@ test-xfail-XOPEN2K8/dirent.h/linknamespace = yes
 test-xfail-XOPEN2K8/fcntl.h/linknamespace = yes
 test-xfail-XOPEN2K8/fmtmsg.h/linknamespace = yes
 test-xfail-XOPEN2K8/grp.h/linknamespace = yes
-test-xfail-XOPEN2K8/libgen.h/linknamespace = yes
 test-xfail-XOPEN2K8/mqueue.h/linknamespace = yes
 test-xfail-XOPEN2K8/netdb.h/linknamespace = yes
 test-xfail-XOPEN2K8/pwd.h/linknamespace = yes
diff --git a/sysdeps/x86_64/memrchr.S b/sysdeps/x86_64/memrchr.S
index ff875f44ab..3b558b54c4 100644
--- a/sysdeps/x86_64/memrchr.S
+++ b/sysdeps/x86_64/memrchr.S
@@ -21,7 +21,7 @@
 #include <sysdep.h>
 
 	.text
-ENTRY (memrchr)
+ENTRY (__memrchr)
 	movd	%rsi, %xmm1
 
 	sub	$16, %rdx
@@ -378,5 +378,5 @@ L(length_less16_part2_return):
 	lea	16(%rax, %rdi), %rax
 	ret
 
-END (memrchr)
-strong_alias (memrchr, __memrchr)
+END (__memrchr)
+weak_alias (__memrchr, memrchr)