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.19-490-g774f928


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  774f928582fcfefb726f115772c001043aefa01c (commit)
      from  36ffe7398af5e5daa5745c64a15226d864378738 (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=774f928582fcfefb726f115772c001043aefa01c

commit 774f928582fcfefb726f115772c001043aefa01c
Author: Andreas Schwab <schwab@suse.de>
Date:   Tue May 13 16:40:41 2014 +0200

    Remove second argument from TLS_INIT_TP macro

diff --git a/ChangeLog b/ChangeLog
index 0396d3b..9d1ae9c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,27 @@
+2014-05-27  Andreas Schwab  <schwab@suse.de>
+
+	* csu/libc-tls.c (__libc_setup_tls): Remove second argument from
+	TLS_INIT_TP macro.
+	* elf/dl-load.c (_dl_map_object_from_fd): Likewise.
+	* elf/rtld.c (init_tls, dl_main): Likewise.
+	* nptl/sysdeps/i386/tls.h (TLS_INIT_TP): Likewise.
+	* nptl/sysdeps/powerpc/tls.h (TLS_INIT_TP): Likewise.
+	* nptl/sysdeps/s390/tls.h (TLS_INIT_TP): Likewise.
+	* nptl/sysdeps/sh/tls.h (TLS_INIT_TP): Likewise.
+	* nptl/sysdeps/sparc/tls.h (TLS_INIT_TP): Likewise.
+	* nptl/sysdeps/x86_64/tls.h (TLS_INIT_TP): Likewise.
+	* sysdeps/aarch64/nptl/tls.h (TLS_INIT_TP): Likewise.
+	* sysdeps/alpha/nptl/tls.h (TLS_INIT_TP): Likewise.
+	* sysdeps/arm/nptl/tls.h (TLS_INIT_TP): Likewise.
+	* sysdeps/hppa/nptl/tls.h (TLS_INIT_TP): Likewise.
+	* sysdeps/ia64/nptl/tls.h (TLS_INIT_TP): Likewise.
+	* sysdeps/m68k/nptl/tls.h (TLS_INIT_TP): Likewise.
+	* sysdeps/mach/hurd/i386/tls.h (_hurd_tls_init): Likewise.
+	* sysdeps/microblaze/nptl/tls.h (TLS_INIT_TP): Likewise.
+	* sysdeps/mips/nptl/tls.h (TLS_INIT_TP): Likewise.
+	* sysdeps/tile/nptl/tls.h (TLS_INIT_TP): Likewise.
+	* sysdeps/generic/tls.h: Update description.
+
 2014-05-27  Will Newton  <will.newton@linaro.org>
 
 	[BZ #16990]
diff --git a/csu/libc-tls.c b/csu/libc-tls.c
index c18b888..dcb607c 100644
--- a/csu/libc-tls.c
+++ b/csu/libc-tls.c
@@ -182,10 +182,10 @@ __libc_setup_tls (size_t tcbsize, size_t tcbalign)
 #if TLS_TCB_AT_TP
   INSTALL_DTV ((char *) tlsblock + tcb_offset, _dl_static_dtv);
 
-  const char *lossage = TLS_INIT_TP ((char *) tlsblock + tcb_offset, 0);
+  const char *lossage = TLS_INIT_TP ((char *) tlsblock + tcb_offset);
 #elif TLS_DTV_AT_TP
   INSTALL_DTV (tlsblock, _dl_static_dtv);
-  const char *lossage = TLS_INIT_TP (tlsblock, 0);
+  const char *lossage = TLS_INIT_TP (tlsblock);
 #else
 # error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
 #endif
diff --git a/elf/dl-load.c b/elf/dl-load.c
index cfa7f25..016a99c 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
@@ -1176,7 +1176,7 @@ cannot allocate TLS data structures for initial thread");
 		}
 
 	      /* Now we install the TCB in the thread register.  */
-	      errstring = TLS_INIT_TP (tcb, 0);
+	      errstring = TLS_INIT_TP (tcb);
 	      if (__glibc_likely (errstring == NULL))
 		{
 		  /* Now we are all good.  */
diff --git a/elf/rtld.c b/elf/rtld.c
index 87c5ffa..71cc0db 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -641,7 +641,7 @@ cannot allocate TLS data structures for initial thread");
   GL(dl_initial_dtv) = GET_DTV (tcbp);
 
   /* And finally install it for the main thread.  */
-  const char *lossage = TLS_INIT_TP (tcbp, 0);
+  const char *lossage = TLS_INIT_TP (tcbp);
   if (__glibc_unlikely (lossage != NULL))
     _dl_fatal_printf ("cannot set up thread-local storage: %s\n", lossage);
   tls_init_tp_called = true;
@@ -2114,7 +2114,7 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
   /* And finally install it for the main thread.  */
   if (! tls_init_tp_called)
     {
-      const char *lossage = TLS_INIT_TP (tcbp, 0);
+      const char *lossage = TLS_INIT_TP (tcbp);
       if (__glibc_unlikely (lossage != NULL))
 	_dl_fatal_printf ("cannot set up thread-local storage: %s\n",
 			  lossage);
diff --git a/nptl/sysdeps/i386/tls.h b/nptl/sysdeps/i386/tls.h
index 4183ee8..2f8d11d 100644
--- a/nptl/sysdeps/i386/tls.h
+++ b/nptl/sysdeps/i386/tls.h
@@ -195,7 +195,7 @@ union user_desc_init
 /* Code to initially initialize the thread pointer.  This might need
    special attention since 'errno' is not yet available and if the
    operation can cause a failure 'errno' must not be touched.  */
-# define TLS_INIT_TP(thrdescr, secondcall) \
+# define TLS_INIT_TP(thrdescr) \
   ({ void *_thrdescr = (thrdescr);					      \
      tcbhead_t *_head = _thrdescr;					      \
      union user_desc_init _segdescr;					      \
@@ -208,10 +208,7 @@ union user_desc_init
      INIT_SYSINFO;							      \
 									      \
      /* The 'entry_number' field.  Let the kernel pick a value.  */	      \
-     if (secondcall)							      \
-       _segdescr.vals[0] = TLS_GET_GS () >> 3;				      \
-     else								      \
-       _segdescr.vals[0] = -1;						      \
+     _segdescr.vals[0] = -1;						      \
      /* The 'base_addr' field.  Pointer to the TCB.  */			      \
      _segdescr.vals[1] = (unsigned long int) _thrdescr;			      \
      /* The 'limit' field.  We use 4GB which is 0xfffff pages.  */	      \
diff --git a/nptl/sysdeps/powerpc/tls.h b/nptl/sysdeps/powerpc/tls.h
index 556c8d5..91cc6f3 100644
--- a/nptl/sysdeps/powerpc/tls.h
+++ b/nptl/sysdeps/powerpc/tls.h
@@ -129,7 +129,7 @@ register void *__thread_register __asm__ ("r13");
 /* Code to initially initialize the thread pointer.  This might need
    special attention since 'errno' is not yet available and if the
    operation can cause a failure 'errno' must not be touched.  */
-# define TLS_INIT_TP(tcbp, secondcall) \
+# define TLS_INIT_TP(tcbp) \
     (__thread_register = (void *) (tcbp) + TLS_TCB_OFFSET, NULL)
 
 /* Return the address of the dtv for the current thread.  */
diff --git a/nptl/sysdeps/s390/tls.h b/nptl/sysdeps/s390/tls.h
index 2019882..bb7c339 100644
--- a/nptl/sysdeps/s390/tls.h
+++ b/nptl/sysdeps/s390/tls.h
@@ -119,7 +119,7 @@ typedef struct
 /* Code to initially initialize the thread pointer.  This might need
    special attention since 'errno' is not yet available and if the
    operation can cause a failure 'errno' must not be touched.  */
-# define TLS_INIT_TP(thrdescr, secondcall) \
+# define TLS_INIT_TP(thrdescr) \
   ({ void *_thrdescr = (thrdescr);					      \
      tcbhead_t *_head = _thrdescr;					      \
 									      \
diff --git a/nptl/sysdeps/sh/tls.h b/nptl/sysdeps/sh/tls.h
index 84e464c..a0660d2 100644
--- a/nptl/sysdeps/sh/tls.h
+++ b/nptl/sysdeps/sh/tls.h
@@ -99,7 +99,7 @@ typedef struct
 /* Code to initially initialize the thread pointer.  This might need
    special attention since 'errno' is not yet available and if the
    operation can cause a failure 'errno' must not be touched.  */
-# define TLS_INIT_TP(tcbp, secondcall) \
+# define TLS_INIT_TP(tcbp) \
   ({ __asm __volatile ("ldc %0,gbr" : : "r" (tcbp)); 0; })
 
 /* Return the address of the dtv for the current thread.  */
diff --git a/nptl/sysdeps/sparc/tls.h b/nptl/sysdeps/sparc/tls.h
index 755bc23..4a1dce7 100644
--- a/nptl/sysdeps/sparc/tls.h
+++ b/nptl/sysdeps/sparc/tls.h
@@ -107,7 +107,7 @@ register struct pthread *__thread_self __asm__("%g7");
   (((tcbhead_t *) (descr))->dtv)
 
 /* Code to initially initialize the thread pointer.  */
-# define TLS_INIT_TP(descr, secondcall) \
+# define TLS_INIT_TP(descr) \
   (__thread_self = (__typeof (__thread_self)) (descr), NULL)
 
 /* Return the address of the dtv for the current thread.  */
diff --git a/nptl/sysdeps/x86_64/tls.h b/nptl/sysdeps/x86_64/tls.h
index 30bd449..fb671f4 100644
--- a/nptl/sysdeps/x86_64/tls.h
+++ b/nptl/sysdeps/x86_64/tls.h
@@ -144,7 +144,7 @@ typedef struct
 
    We have to make the syscall for both uses of the macro since the
    address might be (and probably is) different.  */
-# define TLS_INIT_TP(thrdescr, secondcall) \
+# define TLS_INIT_TP(thrdescr) \
   ({ void *_thrdescr = (thrdescr);					      \
      tcbhead_t *_head = _thrdescr;					      \
      int _result;							      \
diff --git a/sysdeps/aarch64/nptl/tls.h b/sysdeps/aarch64/nptl/tls.h
index 8b260a1..ef8f3af 100644
--- a/sysdeps/aarch64/nptl/tls.h
+++ b/sysdeps/aarch64/nptl/tls.h
@@ -90,7 +90,7 @@ typedef struct
 /* Code to initially initialize the thread pointer.  This might need
    special attention since 'errno' is not yet available and if the
    operation can cause a failure 'errno' must not be touched.  */
-# define TLS_INIT_TP(tcbp, secondcall) \
+# define TLS_INIT_TP(tcbp) \
   ({ __asm __volatile ("msr tpidr_el0, %0" : : "r" (tcbp)); NULL; })
 
 /* Return the address of the dtv for the current thread.  */
diff --git a/sysdeps/alpha/nptl/tls.h b/sysdeps/alpha/nptl/tls.h
index b2e082d..fbc579a 100644
--- a/sysdeps/alpha/nptl/tls.h
+++ b/sysdeps/alpha/nptl/tls.h
@@ -84,7 +84,7 @@ typedef struct
 /* Code to initially initialize the thread pointer.  This might need
    special attention since 'errno' is not yet available and if the
    operation can cause a failure 'errno' must not be touched.  */
-# define TLS_INIT_TP(tcbp, secondcall) \
+# define TLS_INIT_TP(tcbp) \
   (__builtin_set_thread_pointer ((void *)(tcbp)), NULL)
 
 /* Return the address of the dtv for the current thread.  */
diff --git a/sysdeps/arm/nptl/tls.h b/sysdeps/arm/nptl/tls.h
index 1a2d606..fc828d2 100644
--- a/sysdeps/arm/nptl/tls.h
+++ b/sysdeps/arm/nptl/tls.h
@@ -91,7 +91,7 @@ typedef struct
 /* Code to initially initialize the thread pointer.  This might need
    special attention since 'errno' is not yet available and if the
    operation can cause a failure 'errno' must not be touched.  */
-# define TLS_INIT_TP(tcbp, secondcall) \
+# define TLS_INIT_TP(tcbp) \
   ({ INTERNAL_SYSCALL_DECL (err);					\
      long result_var;							\
      result_var = INTERNAL_SYSCALL_ARM (set_tls, err, 1, (tcbp));	\
diff --git a/sysdeps/generic/tls.h b/sysdeps/generic/tls.h
index fb3d965..1c55f26 100644
--- a/sysdeps/generic/tls.h
+++ b/sysdeps/generic/tls.h
@@ -59,12 +59,11 @@
      use the value.
 
 
-     TLS_INIT_TP(tcb, firstcall)
+     TLS_INIT_TP(tcb)
 
      This macro must initialize the thread pointer to enable normal TLS
-     operation.  The first parameter is a pointer to the thread control
-     block.  The second parameter specifies whether this is the first
-     call for the TCB.  ld.so calls this macro more than once.
+     operation.  The parameter is a pointer to the thread control block.
+     ld.so calls this macro once.
 
 
      THREAD_DTV()
diff --git a/sysdeps/hppa/nptl/tls.h b/sysdeps/hppa/nptl/tls.h
index e4dc197..6c721e0 100644
--- a/sysdeps/hppa/nptl/tls.h
+++ b/sysdeps/hppa/nptl/tls.h
@@ -95,7 +95,7 @@ typedef struct
 /* Code to initially initialize the thread pointer.  This might need
    special attention since 'errno' is not yet available and if the
    operation can cause a failure 'errno' must not be touched.  */
-# define TLS_INIT_TP(tcbp, secondcall) \
+# define TLS_INIT_TP(tcbp) \
   ({ __set_cr27(tcbp); NULL; })
 
 /* Return the address of the dtv for the current thread.  */
diff --git a/sysdeps/ia64/nptl/tls.h b/sysdeps/ia64/nptl/tls.h
index 3f9225a..3eca4e6 100644
--- a/sysdeps/ia64/nptl/tls.h
+++ b/sysdeps/ia64/nptl/tls.h
@@ -118,7 +118,7 @@ register struct pthread *__thread_self __asm__("r13");
 /* Code to initially initialize the thread pointer.  This might need
    special attention since 'errno' is not yet available and if the
    operation can cause a failure 'errno' must not be touched.  */
-# define TLS_INIT_TP(thrdescr, secondcall) \
+# define TLS_INIT_TP(thrdescr) \
   (__thread_self = (thrdescr), INIT_SYSINFO, NULL)
 
 /* Return the address of the dtv for the current thread.  */
diff --git a/sysdeps/m68k/nptl/tls.h b/sysdeps/m68k/nptl/tls.h
index 471775a..c1df875 100644
--- a/sysdeps/m68k/nptl/tls.h
+++ b/sysdeps/m68k/nptl/tls.h
@@ -103,7 +103,7 @@ typedef struct
 /* Code to initially initialize the thread pointer.  This might need
    special attention since 'errno' is not yet available and if the
    operation can cause a failure 'errno' must not be touched.  */
-# define TLS_INIT_TP(tcbp, secondcall)					\
+# define TLS_INIT_TP(tcbp)						\
   ({									\
     INTERNAL_SYSCALL_DECL (err);					\
     int _sys_result;							\
diff --git a/sysdeps/mach/hurd/i386/tls.h b/sysdeps/mach/hurd/i386/tls.h
index 03741cd..5b7abd0 100644
--- a/sysdeps/mach/hurd/i386/tls.h
+++ b/sysdeps/mach/hurd/i386/tls.h
@@ -90,69 +90,46 @@ typedef struct
 
 
 static inline const char * __attribute__ ((unused))
-_hurd_tls_init (tcbhead_t *tcb, int secondcall)
+_hurd_tls_init (tcbhead_t *tcb)
 {
   HURD_TLS_DESC_DECL (desc, tcb);
 
-  if (!secondcall)
+  /* This field is used by TLS accesses to get our "thread pointer"
+     from the TLS point of view.  */
+  tcb->tcb = tcb;
+
+  /* Cache our thread port.  */
+  tcb->self = __mach_thread_self ();
+
+  /* Get the first available selector.  */
+  int sel = -1;
+  error_t err = __i386_set_gdt (tcb->self, &sel, desc);
+  if (err == MIG_BAD_ID)
     {
-      /* This field is used by TLS accesses to get our "thread pointer"
-	 from the TLS point of view.  */
-      tcb->tcb = tcb;
-
-      /* Cache our thread port.  */
-      tcb->self = __mach_thread_self ();
-
-      /* Get the first available selector.  */
-      int sel = -1;
-      error_t err = __i386_set_gdt (tcb->self, &sel, desc);
-      if (err == MIG_BAD_ID)
-	{
-	  /* Old kernel, use a per-thread LDT.  */
-	  sel = 0x27;
-	  err = __i386_set_ldt (tcb->self, sel, &desc, 1);
-	  assert_perror (err);
-	  if (err)
-	    return "i386_set_ldt failed";
-	}
-      else if (err)
-	{
-	  assert_perror (err); /* Separate from above with different line #. */
-	  return "i386_set_gdt failed";
-	}
-
-      /* Now install the new selector.  */
-      asm volatile ("mov %w0, %%gs" :: "q" (sel));
+      /* Old kernel, use a per-thread LDT.  */
+      sel = 0x27;
+      err = __i386_set_ldt (tcb->self, sel, &desc, 1);
+      assert_perror (err);
+      if (err)
+	return "i386_set_ldt failed";
     }
-  else
+  else if (err)
     {
-      /* Fetch the selector set by the first call.  */
-      int sel;
-      asm ("mov %%gs, %w0" : "=q" (sel) : "0" (0));
-      if (__builtin_expect (sel, 0x50) & 4) /* LDT selector */
-	{
-	  error_t err = __i386_set_ldt (tcb->self, sel, &desc, 1);
-	  assert_perror (err);
-	  if (err)
-	    return "i386_set_ldt failed";
-	}
-      else
-	{
-	  error_t err = __i386_set_gdt (tcb->self, &sel, desc);
-	  assert_perror (err);
-	  if (err)
-	    return "i386_set_gdt failed";
-	}
+      assert_perror (err); /* Separate from above with different line #. */
+      return "i386_set_gdt failed";
     }
 
+  /* Now install the new selector.  */
+  asm volatile ("mov %w0, %%gs" :: "q" (sel));
+
   return 0;
 }
 
 /* Code to initially initialize the thread pointer.  This might need
    special attention since 'errno' is not yet available and if the
    operation can cause a failure 'errno' must not be touched.  */
-# define TLS_INIT_TP(descr, secondcall) \
-    _hurd_tls_init ((tcbhead_t *) (descr), (secondcall))
+# define TLS_INIT_TP(descr) \
+    _hurd_tls_init ((tcbhead_t *) (descr))
 
 /* Return the TCB address of the current thread.  */
 # define THREAD_SELF							      \
diff --git a/sysdeps/microblaze/nptl/tls.h b/sysdeps/microblaze/nptl/tls.h
index 71f1dd9..e75a30c 100644
--- a/sysdeps/microblaze/nptl/tls.h
+++ b/sysdeps/microblaze/nptl/tls.h
@@ -98,7 +98,7 @@ static inline void *__microblaze_get_thread_area (void)
 
 /* Code to initially initialize the thread pointer.
    r21 is reserved for thread pointer.  */
-# define TLS_INIT_TP(tcbp, secondcall) \
+# define TLS_INIT_TP(tcbp) \
   ({ __asm __volatile ("or r21,r0,%0" : : "r" ((void *)tcbp)); 0; })
 
 /* Return the address of the dtv for the current thread.  */
diff --git a/sysdeps/mips/nptl/tls.h b/sysdeps/mips/nptl/tls.h
index 754d4e4..d6fd83d 100644
--- a/sysdeps/mips/nptl/tls.h
+++ b/sysdeps/mips/nptl/tls.h
@@ -118,7 +118,7 @@ typedef struct
 /* Code to initially initialize the thread pointer.  This might need
    special attention since 'errno' is not yet available and if the
    operation can cause a failure 'errno' must not be touched.  */
-# define TLS_INIT_TP(tcbp, secondcall) \
+# define TLS_INIT_TP(tcbp) \
   ({ INTERNAL_SYSCALL_DECL (err);					\
      long result_var;							\
      result_var = INTERNAL_SYSCALL (set_thread_area, err, 1,		\
diff --git a/sysdeps/tile/nptl/tls.h b/sysdeps/tile/nptl/tls.h
index 2a9bbc1..c93e8a8 100644
--- a/sysdeps/tile/nptl/tls.h
+++ b/sysdeps/tile/nptl/tls.h
@@ -106,7 +106,7 @@ register void *__thread_pointer asm ("tp");
 # define GET_DTV(tcbp)	(((tcbhead_t *) (tcbp))[-1].dtv)
 
 /* Code to initially initialize the thread pointer (tp).  */
-# define TLS_INIT_TP(tcbp, secondcall) \
+# define TLS_INIT_TP(tcbp) \
     (__thread_pointer = (char *)(tcbp) + TLS_TCB_OFFSET, NULL)
 
 /* Return the address of the dtv for the current thread.  */

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

Summary of changes:
 ChangeLog                     |   24 +++++++++++++
 csu/libc-tls.c                |    4 +-
 elf/dl-load.c                 |    2 +-
 elf/rtld.c                    |    4 +-
 nptl/sysdeps/i386/tls.h       |    7 +---
 nptl/sysdeps/powerpc/tls.h    |    2 +-
 nptl/sysdeps/s390/tls.h       |    2 +-
 nptl/sysdeps/sh/tls.h         |    2 +-
 nptl/sysdeps/sparc/tls.h      |    2 +-
 nptl/sysdeps/x86_64/tls.h     |    2 +-
 sysdeps/aarch64/nptl/tls.h    |    2 +-
 sysdeps/alpha/nptl/tls.h      |    2 +-
 sysdeps/arm/nptl/tls.h        |    2 +-
 sysdeps/generic/tls.h         |    7 ++--
 sysdeps/hppa/nptl/tls.h       |    2 +-
 sysdeps/ia64/nptl/tls.h       |    2 +-
 sysdeps/m68k/nptl/tls.h       |    2 +-
 sysdeps/mach/hurd/i386/tls.h  |   75 ++++++++++++++--------------------------
 sysdeps/microblaze/nptl/tls.h |    2 +-
 sysdeps/mips/nptl/tls.h       |    2 +-
 sysdeps/tile/nptl/tls.h       |    2 +-
 21 files changed, 74 insertions(+), 77 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]