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.27.9000-238-gbcfa607


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  bcfa607b26c2399d4fda88705d40978d62af8bf3 (commit)
      from  fa97d2ab5b19de0ca3cd02471d0bbf4f09b5032d (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=bcfa607b26c2399d4fda88705d40978d62af8bf3

commit bcfa607b26c2399d4fda88705d40978d62af8bf3
Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
Date:   Sat Mar 17 01:28:41 2018 +0100

    hurd: Initialize TLS and libpthread before signal thread start
    
    * sysdeps/generic/libc-start.h [!SHARED] (ARCH_SETUP_TLS): Define to
    __libc_setup_tls.
    * sysdeps/unix/sysv/linux/powerpc/libc-start.h [!SHARED]
    (ARCH_SETUP_TLS): Likewise.
    * sysdeps/mach/hurd/libc-start.h: New file copied from
    sysdeps/generic/libc-start.h, but define ARCH_SETUP_TLS to empty.
    * csu/libc-start.c [!SHARED] (LIBC_START_MAIN): Call ARCH_SETUP_TLS instead
    of __libc_setup_tls.
    * sysdeps/mach/hurd/i386/init-first.c [!SHARED] (init1): Call
    __libc_setup_tls before initializing libpthread and running _hurd_init which
    starts the signal thread.

diff --git a/csu/libc-start.c b/csu/libc-start.c
index 605222f..4941323 100644
--- a/csu/libc-start.c
+++ b/csu/libc-start.c
@@ -194,7 +194,7 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL),
   ARCH_SETUP_IREL ();
 
   /* The stack guard goes into the TCB, so initialize it early.  */
-  __libc_setup_tls ();
+  ARCH_SETUP_TLS ();
 
   /* In some architectures, IREL{,A} relocations happen after TLS setup in
      order to let IFUNC resolvers benefit from TCB information, e.g. powerpc's
diff --git a/sysdeps/generic/libc-start.h b/sysdeps/generic/libc-start.h
index 6c416a1..e0361f6 100644
--- a/sysdeps/generic/libc-start.h
+++ b/sysdeps/generic/libc-start.h
@@ -24,6 +24,7 @@
    initialization, and this means you cannot, without machine
    knowledge, access TLS from an IFUNC resolver.  */
 #define ARCH_SETUP_IREL() apply_irel ()
+#define ARCH_SETUP_TLS() __libc_setup_tls ()
 #define ARCH_APPLY_IREL()
 #endif /* ! SHARED  */
 
diff --git a/sysdeps/mach/hurd/i386/init-first.c b/sysdeps/mach/hurd/i386/init-first.c
index e272e32..8b6e62b 100644
--- a/sysdeps/mach/hurd/i386/init-first.c
+++ b/sysdeps/mach/hurd/i386/init-first.c
@@ -104,12 +104,12 @@ init1 (int argc, char *arg0, ...)
     ++envp;
   d = (void *) ++envp;
 
+#ifndef SHARED
   /* If we are the bootstrap task started by the kernel,
      then after the environment pointers there is no Hurd
      data block; the argument strings start there.  */
   if ((void *) d == argv[0] || d->phdr == 0)
     {
-#ifndef SHARED
       /* With a new enough linker (binutils-2.23 or better),
          the magic __ehdr_start symbol will be available and
          __libc_start_main will have done this that way already.  */
@@ -124,18 +124,27 @@ init1 (int argc, char *arg0, ...)
           _dl_phnum = ehdr->e_phnum;
           assert (ehdr->e_phentsize == sizeof (ElfW(Phdr)));
         }
-#endif
-      return;
     }
+  else
+    {
+      __libc_enable_secure = d->flags & EXEC_SECURE;
 
-#ifndef SHARED
-  __libc_enable_secure = d->flags & EXEC_SECURE;
+      _dl_phdr = (ElfW(Phdr) *) d->phdr;
+      _dl_phnum = d->phdrsz / sizeof (ElfW(Phdr));
+      assert (d->phdrsz % sizeof (ElfW(Phdr)) == 0);
+    }
 
-  _dl_phdr = (ElfW(Phdr) *) d->phdr;
-  _dl_phnum = d->phdrsz / sizeof (ElfW(Phdr));
-  assert (d->phdrsz % sizeof (ElfW(Phdr)) == 0);
+  __libc_setup_tls ();
 #endif
 
+  /* Initialize libpthread if linked in.  */
+  if (__pthread_initialize_minimal != NULL)
+    __pthread_initialize_minimal ();
+
+  if ((void *) d == argv[0])
+    /* No Hurd data block to process.  */
+    return;
+
   _hurd_init_dtable = d->dtable;
   _hurd_init_dtablesize = d->dtablesize;
 
diff --git a/sysdeps/generic/libc-start.h b/sysdeps/mach/hurd/libc-start.h
similarity index 94%
copy from sysdeps/generic/libc-start.h
copy to sysdeps/mach/hurd/libc-start.h
index 6c416a1..f7e3993 100644
--- a/sysdeps/generic/libc-start.h
+++ b/sysdeps/mach/hurd/libc-start.h
@@ -1,4 +1,4 @@
-/* Generic definitions for libc main startup.
+/* Hurd definitions for libc main startup.
    Copyright (C) 2017-2018 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -24,6 +24,7 @@
    initialization, and this means you cannot, without machine
    knowledge, access TLS from an IFUNC resolver.  */
 #define ARCH_SETUP_IREL() apply_irel ()
+#define ARCH_SETUP_TLS()
 #define ARCH_APPLY_IREL()
 #endif /* ! SHARED  */
 
diff --git a/sysdeps/unix/sysv/linux/powerpc/libc-start.h b/sysdeps/unix/sysv/linux/powerpc/libc-start.h
index 46b38b0..689abb0 100644
--- a/sysdeps/unix/sysv/linux/powerpc/libc-start.h
+++ b/sysdeps/unix/sysv/linux/powerpc/libc-start.h
@@ -23,6 +23,7 @@
 /* IREL{,A} must happen after TCB initialization in order to allow IFUNC
    resolvers to read TCB fields, e.g. hwcap and at_platform.  */
 #define ARCH_SETUP_IREL()
+#define ARCH_SETUP_TLS() __libc_setup_tls ()
 #define ARCH_APPLY_IREL() apply_irel ()
 #endif /* ! SHARED  */
 

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

Summary of changes:
 csu/libc-start.c                             |    2 +-
 sysdeps/generic/libc-start.h                 |    1 +
 sysdeps/mach/hurd/i386/init-first.c          |   25 +++++++++++++++++--------
 sysdeps/{generic => mach/hurd}/libc-start.h  |    3 ++-
 sysdeps/unix/sysv/linux/powerpc/libc-start.h |    1 +
 5 files changed, 22 insertions(+), 10 deletions(-)
 copy sysdeps/{generic => mach/hurd}/libc-start.h (94%)


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]