This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.26-405-gbfb0deb


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  bfb0deb3554204cbba10d61d96cad355e4ca5623 (commit)
      from  cebcb9f864d4ca29e155363e71b7de6826d13cf1 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=bfb0deb3554204cbba10d61d96cad355e4ca5623

commit bfb0deb3554204cbba10d61d96cad355e4ca5623
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Tue Sep 26 21:21:01 2017 +0000

    Fix make-syscalls.sh VDSO support for GCC 8.
    
    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.
    
    	* sysdeps/unix/make-syscalls.sh: Use __ifunc to define symbols
    	using VDSO.

diff --git a/ChangeLog b/ChangeLog
index 0426d63..91c7751 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2017-09-26  Joseph Myers  <joseph@codesourcery.com>
+
+	* sysdeps/unix/make-syscalls.sh: Use __ifunc to define symbols
+	using VDSO.
+
 2017-09-26  Alexey Makhalov  <amakhalov@vmware.com>
 
 	* elf/dl-tunables.c (do_tunable_update_val): Range checking fix.
diff --git a/sysdeps/unix/make-syscalls.sh b/sysdeps/unix/make-syscalls.sh
index 042cfac..874ad69 100644
--- a/sysdeps/unix/make-syscalls.sh
+++ b/sysdeps/unix/make-syscalls.sh
@@ -280,16 +280,14 @@ while read file srcfile caller syscall args strong weak; do
 \$(foreach p,\$(sysd-rules-targets),\$(objpfx)\$(patsubst %,\$p,$file).os): \\
 		\$(..)sysdeps/unix/make-syscalls.sh
 	\$(make-target-directory)
-	(echo '#include <dl-vdso.h>'; \\
-	 echo 'extern void *${strong}_ifunc (void) __asm ("${strong}");'; \\
-	 echo 'void *'; \\
-	 echo 'inhibit_stack_protector'; \\
-	 echo '${strong}_ifunc (void)'; \\
-	 echo '{'; \\
-	 echo '  PREPARE_VERSION_KNOWN (symver, ${vdso_symver});'; \\
-	 echo '  return _dl_vdso_vsym ("${vdso_symbol}", &symver);'; \\
-	 echo '}'; \\
-	 echo 'asm (".type ${strong}, %gnu_indirect_function");'; \\
+	(echo '#define ${strong} __redirect_${strong}'; \\
+	 echo '#include <dl-vdso.h>'; \\
+	 echo '#undef ${strong}'; \\
+	 echo '#define vdso_ifunc_init() \\'; \\
+	 echo '  PREPARE_VERSION_KNOWN (symver, ${vdso_symver})'; \\
+	 echo '__ifunc (__redirect_${strong}, ${strong},'; \\
+	 echo '         _dl_vdso_vsym ("${vdso_symbol}", &symver), void,'; \\
+	 echo '         vdso_ifunc_init)'; \\
 EOF
     # This is doing "hidden_def (${strong})", but the compiler
     # doesn't know that we've defined ${strong} in the same file, so

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                     |    5 +++++
 sysdeps/unix/make-syscalls.sh |   18 ++++++++----------
 2 files changed, 13 insertions(+), 10 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]