about summary refs log tree commit diff
path: root/sysdeps/generic
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2002-08-20 10:14:15 +0000
committerUlrich Drepper <drepper@redhat.com>2002-08-20 10:14:15 +0000
commitd78ce054e2a3b23fed53f42ea7aa6e1c2ff6d748 (patch)
treea7d903d9e969eaa9cc6cfcf812c3f075dea7c6ca /sysdeps/generic
parent58d2d09bde3578bd25d55df03e962764ba81bd13 (diff)
downloadglibc-d78ce054e2a3b23fed53f42ea7aa6e1c2ff6d748.tar.gz
glibc-d78ce054e2a3b23fed53f42ea7aa6e1c2ff6d748.tar.xz
glibc-d78ce054e2a3b23fed53f42ea7aa6e1c2ff6d748.zip
Update.
	* elf/rtld.c (_dl_start): Pass extra argument 1 to TLS_INIT_TP.
	(dl_main): Padd extra argument 0 to TLS_INIT_TP.
	* sysdeps/generic/libc-tls.c (__libc_setup_tls): Pass extra
	argument 1 to TLS_INIT_TP.
	* sysdeps/generic/tls.h (TLS_INIT_TP): Describe new parameter.

	* locale/loadarchive.c (_nl_load_locale_from_archive): Store strdup of
Diffstat (limited to 'sysdeps/generic')
-rw-r--r--sysdeps/generic/libc-tls.c4
-rw-r--r--sysdeps/generic/tls.h6
2 files changed, 6 insertions, 4 deletions
diff --git a/sysdeps/generic/libc-tls.c b/sysdeps/generic/libc-tls.c
index 51b85ef28f..88b0ccf8fc 100644
--- a/sysdeps/generic/libc-tls.c
+++ b/sysdeps/generic/libc-tls.c
@@ -137,10 +137,10 @@ __libc_setup_tls (size_t tcbsize, size_t tcbalign)
 
   INSTALL_DTV ((char *) tlsblock + tcb_offset, static_dtv);
 
-  TLS_INIT_TP ((char *) tlsblock + tcb_offset);
+  TLS_INIT_TP ((char *) tlsblock + tcb_offset, 1);
 # elif TLS_DTV_AT_TP
   INSTALL_DTV (tlsblock, static_dtv);
-  TLS_INIT_TP (tlsblock);
+  TLS_INIT_TP (tlsblock, 1);
 # else
 #  error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined"
 # endif
diff --git a/sysdeps/generic/tls.h b/sysdeps/generic/tls.h
index 38f84acd46..6a23ec05e1 100644
--- a/sysdeps/generic/tls.h
+++ b/sysdeps/generic/tls.h
@@ -65,10 +65,12 @@
      use the value.
 
 
-     TLS_INIT_TP(tcb)
+     TLS_INIT_TP(tcb, firstcall)
 
      This macro must initialize the thread pointer to enable normal TLS
-     operation.  The parameter is a pointer to the thread control block.
+     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.
 
 
      THREAD_DTV()