summaryrefslogtreecommitdiff
path: root/sysdeps
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 /sysdeps
parent9a44d530c464d081e925b1c1af2b8bbe6e7b3207 (diff)
downloadglibc-380292ba8b97c82a8ede3ed35f6a3c42b7b47466.tar.gz
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.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/x86_64/memrchr.S6
1 files changed, 3 insertions, 3 deletions
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)