This is the mail archive of the
mailing list for the glibc project.
Re: [PATCH] fork in libpthread cannot use IFUNC resolver [BZ #19861]
- From: Roland McGrath <roland at hack dot frob dot com>
- To: fweimer at redhat dot com (Florian Weimer)
- Cc: libc-alpha at sourceware dot org
- Date: Fri, 27 May 2016 12:51:23 -0700 (PDT)
- Subject: Re: [PATCH] fork in libpthread cannot use IFUNC resolver [BZ #19861]
- Authentication-results: sourceware.org; auth=none
- References: <20160524091019 dot 269A04222879F at oldenburg dot str dot redhat dot com>
> [BZ #19861]
> Do not use IFUNC resolver with potentially unrelcated symbol.
> --- a/nptl/pt-fork.c
> +++ b/nptl/pt-fork.c
> @@ -25,48 +25,20 @@
> the historical ABI requires it. For static linking, there is no need to
> provide anything here--the libc version will be linked in. For shared
> library ABI compatibility, there must be __fork and fork symbols in
> - libpthread.so; so we define them using IFUNC to redirect to the libc
> - function. */
> + libpthread.so. */
I think it's worthwhile for this comment to address the IFUNC issue.
e.g., "It's tempting to avoid the tail-call overhead in the shared library
case by using IFUNC here, but ..."
> -DEFINE_FORK (fork_ifunc)
> +strong_alias (fork_compat, fork_ifunc)
> compat_symbol (libpthread, fork_ifunc, fork, GLIBC_2_0);
> -DEFINE_FORK (__fork_ifunc)
> +strong_alias (fork_compat, __fork_ifunc)
> compat_symbol (libpthread, __fork_ifunc, __fork, GLIBC_2_0);
Nothing that remains should have "ifunc" in the name.