This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Fix make-syscalls.sh VDSO support for GCC 8
- From: Carlos O'Donell <carlos at redhat dot com>
- To: Joseph Myers <joseph at codesourcery dot com>, libc-alpha at sourceware dot org
- Cc: hjl dot tools at gmail dot com
- Date: Tue, 26 Sep 2017 15:13:06 -0600
- Subject: Re: Fix make-syscalls.sh VDSO support for GCC 8
- Authentication-results: sourceware.org; auth=none
- References: <alpine.DEB.2.20.1709262107420.29011@digraph.polyomino.org.uk>
On 09/26/2017 03:08 PM, Joseph Myers wrote:
> sysdeps/unix/make-syscalls.sh has support, used only by x32, for
> generating IFUNCs for kernel VDSO symbols. This support creates
> IFUNCs by setting symbol types manually, which is bad for debug info
> and does not work with current GCC mainline because it results in
> errors from the checks on types of function aliases.
>
> This patch fixes it to use the common __ifunc macro, which uses the
> ifunc attribute when available and so works with GCC mainline. Note
> however that the original error resulted from an indirect inclusion of
> a header declaring __gettimeofday from the generated sources, and
> using __ifunc now relies on such an indirect inclusion remaining as it
> means use of __typeof to determine the correct types. If glibc's
> headers change in such a way as to remove that indirect inclusion, it
> will become necessary to change the syscalls.list syntax for VDSO
> syscalls so the name of the header to include can be specified.
>
> Tested (compilation only) with build-many-glibcs.py that this fixes
> the build for x32 with GCC mainline.
>
> 2017-09-26 Joseph Myers <joseph@codesourcery.com>
>
> * sysdeps/unix/make-syscalls.sh: Use __ifunc to define symbols
> using VDSO.
Looks like a good solution for now.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
--
Cheers,
Carlos.