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.21-13-g8c28bbc


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  8c28bbc6d989575388ac42e00ee852fc3666bb5f (commit)
       via  ec2a88b3c659ad4f5a662ca289edae4f0dc19d88 (commit)
       via  beff1d132c16aedd87a3f1bc7b572c8e69819015 (commit)
      from  ea02c6b81296ef3131e0ab3bdf37f3a9905597f4 (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=8c28bbc6d989575388ac42e00ee852fc3666bb5f

commit 8c28bbc6d989575388ac42e00ee852fc3666bb5f
Author: Roland McGrath <roland@hack.frob.com>
Date:   Fri Feb 6 10:53:38 2015 -0800

    Clean up NPTL system to be compat-only.

diff --git a/ChangeLog b/ChangeLog
index 31efde9..94a3907 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2015-02-06  Roland McGrath  <roland@hack.frob.com>
 
+	* nptl/pt-system.c: Rewritten.  Put everything under
+	[SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_22)].
+	Use IFUNC to redirect when possible.
+
 	* nptl/pt-longjmp.c: Rewritten.  Put everything under
 	[SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_22)].
 	Use IFUNC to redirect when possible.
diff --git a/nptl/pt-system.c b/nptl/pt-system.c
index 795c5a0..389581f 100644
--- a/nptl/pt-system.c
+++ b/nptl/pt-system.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 2002-2015 Free Software Foundation, Inc.
+/* ABI compatibility for 'system' symbol in libpthread ABI.
+   Copyright (C) 2002-2015 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -16,17 +17,48 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <errno.h>
 #include <stdlib.h>
-#include <sysdep.h>
-#include "pthreadP.h"
+#include <shlib-compat.h>
 
+/* libpthread once had its own 'system', though there was no apparent
+   reason for it.  There is no use in having a separate symbol in
+   libpthread, but 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 a
+   'system' symbol in libpthread.so; so we define it using IFUNC to
+   redirect to the libc function.  */
 
-int
-system (const char *line)
+#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_22)
+
+# if HAVE_IFUNC
+
+static __typeof (system) *
+__attribute__ ((used))
+system_resolve (void)
+{
+  return &__libc_system;
+}
+
+asm (".globl system_ifunc\n"
+     ".type system_ifunc, %gnu_indirect_function");
+
+#  ifdef HAVE_ASM_SET_DIRECTIVE
+asm (".set system_ifunc, system_resolve");
+#  else
+asm ("system_ifunc = system_resolve");
+#  endif
+
+# else  /* !HAVE_IFUNC */
+
+static int __attribute__ ((used))
+system_compat (const char *line)
 {
   return __libc_system (line);
 }
+strong_alias (system_compat, system_ifunc)
+
+# endif  /* HAVE_IFUNC */
+
+compat_symbol (libpthread, system_ifunc, system, GLIBC_2_0);
 
-/* __libc_system in libc.so handles cancellation.  */
-LIBC_CANCEL_HANDLED ();
+#endif

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

commit ec2a88b3c659ad4f5a662ca289edae4f0dc19d88
Author: Roland McGrath <roland@hack.frob.com>
Date:   Fri Feb 6 10:53:27 2015 -0800

    Clean up NPTL longjmp to be compat-only.

diff --git a/ChangeLog b/ChangeLog
index 92a1c62..31efde9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2015-02-06  Roland McGrath  <roland@hack.frob.com>
 
+	* nptl/pt-longjmp.c: Rewritten.  Put everything under
+	[SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_22)].
+	Use IFUNC to redirect when possible.
+
 	* nptl/pt-fork.c: Rewritten.  Put everything under
 	[SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_22)].
 	Use IFUNC to redirect when possible.
diff --git a/nptl/pt-longjmp.c b/nptl/pt-longjmp.c
index 88a4289..f192461 100644
--- a/nptl/pt-longjmp.c
+++ b/nptl/pt-longjmp.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 2002-2015 Free Software Foundation, Inc.
+/* ABI compatibility for 'longjmp' and 'siglongjmp' symbols in libpthread ABI.
+   Copyright (C) 2002-2015 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -17,12 +18,55 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <setjmp.h>
-#include <stdlib.h>
-#include "pthreadP.h"
+#include <shlib-compat.h>
 
-void
-longjmp (jmp_buf env, int val)
+/* libpthread once had its own longjmp (and siglongjmp alias), though there
+   was no apparent reason for it.  There is no use in having a separate
+   symbol in libpthread, but 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
+   longjmp and siglongjmp symbols in libpthread.so; so we define them using
+   IFUNC to redirect to the libc function.  */
+
+#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_22)
+
+# if HAVE_IFUNC
+
+static __typeof (longjmp) *
+__attribute__ ((used))
+longjmp_resolve (void)
+{
+  return &__libc_longjmp;
+}
+
+#  ifdef HAVE_ASM_SET_DIRECTIVE
+#   define DEFINE_LONGJMP(name) \
+  asm (".set " #name ", longjmp_resolve\n" \
+       ".globl " #name "\n" \
+       ".type " #name ", %gnu_indirect_function");
+#  else
+#   define DEFINE_LONGJMP(name) \
+  asm (#name " = longjmp_resolve\n" \
+       ".globl " #name "\n" \
+       ".type " #name ", %gnu_indirect_function");
+#  endif
+
+# else  /* !HAVE_IFUNC */
+
+static void __attribute__ ((noreturn, used))
+longjmp_compat (jmp_buf env, int val)
 {
   __libc_longjmp (env, val);
 }
-weak_alias (longjmp, siglongjmp)
+
+# define DEFINE_LONGJMP(name) strong_alias (longjmp_compat, name)
+
+# endif  /* HAVE_IFUNC */
+
+DEFINE_LONGJMP (longjmp_ifunc)
+compat_symbol (libpthread, longjmp_ifunc, longjmp, GLIBC_2_0);
+
+DEFINE_LONGJMP (siglongjmp_ifunc)
+compat_symbol (libpthread, siglongjmp_ifunc, siglongjmp, GLIBC_2_0);
+
+#endif

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

commit beff1d132c16aedd87a3f1bc7b572c8e69819015
Author: Roland McGrath <roland@hack.frob.com>
Date:   Fri Feb 6 10:53:07 2015 -0800

    Clean up NPTL fork to be compat-only.

diff --git a/ChangeLog b/ChangeLog
index 942eacd..92a1c62 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2015-02-06  Roland McGrath  <roland@hack.frob.com>
 
+	* nptl/pt-fork.c: Rewritten.  Put everything under
+	[SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_22)].
+	Use IFUNC to redirect when possible.
+	* nptl/Versions (libpthread: GLIBC_2.22): New (empty) version set.
+
 	* sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Remove all
 	code under [!__ASSUME_FUTEX_CLOCK_REALTIME], since that is defined
 	unconditionally nowadays.  This included the only reference to
diff --git a/nptl/Versions b/nptl/Versions
index 4e134fa..bc8a15b 100644
--- a/nptl/Versions
+++ b/nptl/Versions
@@ -266,6 +266,9 @@ libpthread {
   GLIBC_2.20 {
   }
 
+  GLIBC_2.22 {
+  }
+
   GLIBC_PRIVATE {
     __pthread_initialize_minimal;
     __pthread_clock_gettime; __pthread_clock_settime;
diff --git a/nptl/pt-fork.c b/nptl/pt-fork.c
index ea9e876..fd6544b 100644
--- a/nptl/pt-fork.c
+++ b/nptl/pt-fork.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 2002-2015 Free Software Foundation, Inc.
+/* ABI compatibility for 'fork' symbol in libpthread ABI.
+   Copyright (C) 2002-2015 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -17,11 +18,55 @@
    <http://www.gnu.org/licenses/>.  */
 
 #include <unistd.h>
+#include <shlib-compat.h>
 
+/* libpthread once had its own fork, though there was no apparent reason
+   for it.  There is no use in having a separate symbol in libpthread, but
+   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.  */
 
-pid_t
-__fork (void)
+#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_22)
+
+# if HAVE_IFUNC
+
+static __typeof (fork) *
+__attribute__ ((used))
+fork_resolve (void)
+{
+  return &__libc_fork;
+}
+
+#  ifdef HAVE_ASM_SET_DIRECTIVE
+#   define DEFINE_FORK(name) \
+  asm (".set " #name ", fork_resolve\n" \
+       ".globl " #name "\n" \
+       ".type " #name ", %gnu_indirect_function");
+#  else
+#   define DEFINE_FORK(name) \
+  asm (#name " = fork_resolve\n" \
+       ".globl " #name "\n" \
+       ".type " #name ", %gnu_indirect_function");
+#  endif
+
+# else  /* !HAVE_IFUNC */
+
+static pid_t __attribute__ ((used))
+fork_compat (void)
 {
   return __libc_fork ();
 }
-strong_alias (__fork, fork)
+
+# define DEFINE_FORK(name) strong_alias (fork_compat, name)
+
+# endif  /* HAVE_IFUNC */
+
+DEFINE_FORK (fork_ifunc)
+compat_symbol (libpthread, fork_ifunc, fork, GLIBC_2_0);
+
+DEFINE_FORK (__fork_ifunc)
+compat_symbol (libpthread, __fork_ifunc, __fork, GLIBC_2_0);
+
+#endif

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

Summary of changes:
 ChangeLog         |   13 ++++++++++++
 nptl/Versions     |    3 ++
 nptl/pt-fork.c    |   53 ++++++++++++++++++++++++++++++++++++++++++++++---
 nptl/pt-longjmp.c |   56 +++++++++++++++++++++++++++++++++++++++++++++++-----
 nptl/pt-system.c  |   48 +++++++++++++++++++++++++++++++++++++-------
 5 files changed, 155 insertions(+), 18 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]