if (&__dso_handle != NULL)
if (__builtin_expect (&__dso_handle != NULL, 1))
static void pthread_initialize(void){  struct sigaction sa;  sigset_t mask;  /* If already done (e.g. by a constructor called earlier!), bail out */  if (__pthread_initial_thread_bos != NULL) return;#ifdef TEST_FOR_COMPARE_AND_SWAP  /* Test if compare-and-swap is available */  __pthread_has_cas = compare_and_swap_is_available();#endif  /* For the initial stack, reserve at least STACK_SIZE bytes of stack     below the current stack address, and align that on a     STACK_SIZE boundary. */  __pthread_initial_thread_bos =    (char *)(((long)CURRENT_STACK_FRAME - 2 * STACK_SIZE) & ~(STACK_SIZE - 1));  /* Update the descriptor for the initial thread. */  __pthread_initial_thread.p_pid = __getpid();  /* Likewise for the resolver state _res.  */  __pthread_initial_thread.p_resp = &_res;#ifdef __SIGRTMIN  /* Initialize real-time signals. */  init_rtsigs ();#endif  /* Setup signal handlers for the initial thread.     Since signal handlers are shared between threads, these settings     will be inherited by all other threads. */  sa.sa_handler = pthread_handle_sigrestart;  sigemptyset(&sa.sa_mask);  sa.sa_flags = 0;  __libc_sigaction(__pthread_sig_restart, &sa, NULL);  sa.sa_handler = pthread_handle_sigcancel;  // sa.sa_flags = 0;  __libc_sigaction(__pthread_sig_cancel, &sa, NULL);  if (__pthread_sig_debug > 0) {    sa.sa_handler = pthread_handle_sigdebug;    sigemptyset(&sa.sa_mask);    // sa.sa_flags = 0;    __libc_sigaction(__pthread_sig_debug, &sa, NULL);  }  /* Initially, block __pthread_sig_restart. Will be unblocked on demand. */  sigemptyset(&mask);  sigaddset(&mask, __pthread_sig_restart);  sigprocmask(SIG_BLOCK, &mask, NULL);  /* Register an exit function to kill all other threads. */  /* Do it early so that user-registered atexit functions are called     before pthread_exit_process. */  if (&__dso_handle != NULL)    /* The cast is a bit unclean.  The function expects two arguments but       we can only pass one.  Fortunately this is not a problem since the       second argument of `pthread_exit_process' is simply ignored.  */    __cxa_atexit((void (*) (void *)) pthread_exit_process, NULL, __dso_handle);  else    __on_exit (pthread_exit_process, NULL);  /* How many processors.  */  __pthread_smp_kernel = is_smp_system ();}