Fix x86_64 memrchr namespace (bug 17719)
diff mbox

Message ID alpine.DEB.2.10.1412161815590.15637@digraph.polyomino.org.uk
State New
Headers show

Commit Message

Joseph Myers Dec. 16, 2014, 6:16 p.m. UTC
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).

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.

Comments

H.J. Lu Dec. 16, 2014, 6:25 p.m. UTC | #1
On Tue, Dec 16, 2014 at 10:16 AM, Joseph Myers <joseph@codesourcery.com> wrote:
> 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).
>
> 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.
>
> diff --git a/conform/Makefile b/conform/Makefile
> index e0412de..45a17fb 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 ff875f4..3b558b5 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)
>
> --
> Joseph S. Myers
> joseph@codesourcery.com

Looks good to me.

Thanks.
Roland McGrath Dec. 16, 2014, 6:28 p.m. UTC | #2
OK

Patch
diff mbox

diff --git a/conform/Makefile b/conform/Makefile
index e0412de..45a17fb 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 ff875f4..3b558b5 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)