This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Fix resolver bind, getsockname namespace (bug 17733)
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Joseph Myers <joseph at codesourcery dot com>
- Cc: GNU C Library <libc-alpha at sourceware dot org>
- Date: Sun, 21 Dec 2014 09:51:01 -0800
- Subject: Re: Fix resolver bind, getsockname namespace (bug 17733)
- Authentication-results: sourceware.org; auth=none
- References: <alpine dot DEB dot 2 dot 10 dot 1412191854520 dot 3401 at digraph dot polyomino dot org dot uk>
On Fri, Dec 19, 2014 at 10:56 AM, Joseph Myers <joseph@codesourcery.com> wrote:
> On Linux architectures using socketcall, the resolver ends up bringing
> in strong symbols for bind and getsockname, which are not in
> POSIX.1-1996. This causes linknamespace test failures:
>
> FAIL: conform/POSIX/pthread.h/linknamespace
> FAIL: conform/POSIX/sched.h/linknamespace
> FAIL: conform/POSIX/time.h/linknamespace
>
> These functions are defined as strong symbols with __bind and
> __getsockname as weak aliases. This patch switches this to the other
> way round by removing the NO_WEAK_ALIAS definitions and so letting the
> default case in socket.S act; I see no reason for the existing
> arrangements.
>
> Tested for x86 (testsuite, and that disassembly of installed shared
> libraries is unchanged by the patch).
>
> 2014-12-19 Joseph Myers <joseph@codesourcery.com>
>
> [BZ #17733]
> * sysdeps/unix/sysv/linux/bind.S (NO_WEAK_ALIAS): Do not define.
> (__bind): Do not define as weak alias.
> * sysdeps/unix/sysv/linux/getsockname.S (NO_WEAK_ALIAS): Do not
> define.
> (__getsockname): Do not define as weak alias.
>
> diff --git a/sysdeps/unix/sysv/linux/bind.S b/sysdeps/unix/sysv/linux/bind.S
> index 7719ad0..61fb5eb 100644
> --- a/sysdeps/unix/sysv/linux/bind.S
> +++ b/sysdeps/unix/sysv/linux/bind.S
> @@ -1,5 +1,3 @@
> #define socket bind
> #define NARGS 3
> -#define NO_WEAK_ALIAS 1
> #include <socket.S>
> -weak_alias (bind, __bind)
> diff --git a/sysdeps/unix/sysv/linux/getsockname.S b/sysdeps/unix/sysv/linux/getsockname.S
> index 9ea371f..c138be9 100644
> --- a/sysdeps/unix/sysv/linux/getsockname.S
> +++ b/sysdeps/unix/sysv/linux/getsockname.S
> @@ -1,5 +1,3 @@
> #define socket getsockname
> #define NARGS 3
> -#define NO_WEAK_ALIAS 1
> #include <socket.S>
> -weak_alias (getsockname, __getsockname)
>
Looks good to me.
Do sysdeps/unix/sysv/linux/listen.S and sysdeps/unix/sysv/linux/setsockopt.S
have the same issue? Does the linknamespace test check them?
Thanks.
--
H.J.