Fix make-syscalls.sh VDSO support for GCC 8

Carlos O'Donell carlos@redhat.com
Tue Sep 26 21:13:00 GMT 2017


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.



More information about the Libc-alpha mailing list