__libc_pthread_init (&__fork_generation, __reclaim_stacks, ptr_pthread_functions);
__pthread_initialize_minimal_internal (void){#ifndef SHARED  /* Unlike in the dynamically linked case the dynamic linker has not     taken care of initializing the TLS data structures.  */  __libc_setup_tls (TLS_TCB_SIZE, TLS_TCB_ALIGN);  /* We must prevent gcc from being clever and move any of the     following code ahead of the __libc_setup_tls call.  This function     will initialize the thread register which is subsequently     used.  */  __asm __volatile ("");#endif  /* Minimal initialization of the thread descriptor.  */  struct pthread *pd = THREAD_SELF;  INTERNAL_SYSCALL_DECL (err);  pd->tid = INTERNAL_SYSCALL (set_tid_address, err, 1, &pd->tid);  THREAD_SETMEM (pd, specific[0], &pd->specific_1stblock[0]);  THREAD_SETMEM (pd, user_stack, true);  if (LLL_LOCK_INITIALIZER != 0)    THREAD_SETMEM (pd, lock, LLL_LOCK_INITIALIZER);#if HP_TIMING_AVAIL  THREAD_SETMEM (pd, cpuclock_offset, GL(dl_cpuclock_offset));#endif  /* Initialize the list of all running threads with the main thread.  */  INIT_LIST_HEAD (&__stack_user);  list_add (&pd->list, &__stack_user);  /* Install the cancellation signal handler.  If for some reason we     cannot install the handler we do not abort.  Maybe we should, but     it is only asynchronous cancellation which is affected.  */  struct sigaction sa;  sa.sa_handler = sigcancel_handler;  sa.sa_flags = 0;  sigemptyset (&sa.sa_mask);  (void) __libc_sigaction (SIGCANCEL, &sa, NULL);  /* The parent process might have left the signal blocked.  Just in     case, unblock it.  We reuse the signal mask in the sigaction     structure.  It is already cleared.  */  __sigaddset (&sa.sa_mask, SIGCANCEL);  (void) INTERNAL_SYSCALL (rt_sigprocmask, err, 4, SIG_UNBLOCK, &sa.sa_mask,			   NULL, _NSIG / 8);  /* Determine the default allowed stack size.  This is the size used     in case the user does not specify one.  */  struct rlimit limit;  if (getrlimit (RLIMIT_STACK, &limit) != 0      || limit.rlim_cur == RLIM_INFINITY)    /* The system limit is not usable.  Use an architecture-specific       default.  */    limit.rlim_cur = ARCH_STACK_DEFAULT_SIZE;#ifdef NEED_SEPARATE_REGISTER_STACK  __default_stacksize = MAX (limit.rlim_cur / 2, PTHREAD_STACK_MIN);#else  __default_stacksize = MAX (limit.rlim_cur, PTHREAD_STACK_MIN);#endif  /* The maximum page size better should be a multiple of the page     size.  */  assert (__default_stacksize % __sysconf (_SC_PAGESIZE) == 0);  /* Get the size of the static and alignment requirements for the TLS     block.  */  size_t static_tls_align;  _dl_get_tls_static_info (&__static_tls_size, &static_tls_align);  /* Make sure the size takes all the alignments into account.  */  if (STACK_ALIGN > static_tls_align)    static_tls_align = STACK_ALIGN;  __static_tls_align_m1 = static_tls_align - 1;  __static_tls_size = roundup (__static_tls_size, static_tls_align);#ifdef SHARED  /* Transfer the old value from the dynamic linker's internal location.  */  *__libc_dl_error_tsd () = *(*GL(dl_error_catch_tsd)) ();  GL(dl_error_catch_tsd) = &__libc_dl_error_tsd;#endif  /* Register the fork generation counter with the libc.  */  __libc_pthread_init (&__fork_generation, __reclaim_stacks,		       ptr_pthread_functions);}