objname ?: "", objname ? ": " : "",
objname ?: "", objname && *objname ? ": " : "",
_dl_signal_error (int errcode,		  const char *objname,		  const char *errstring){  if (! errstring)    errstring = "DYNAMIC LINKER BUG!!!";  if (catch)    {      /* We are inside _dl_catch_error.  Return to it.  We have to	 duplicate the error string since it might be allocated on the	 stack.  */      size_t len = strlen (errstring) + 1;      catch->errstring = malloc (len);      if (catch->errstring != NULL)	memcpy (catch->errstring, errstring, len);      catch->objname = objname;      longjmp (catch->env, errcode ?: -1);    }  else if (receiver)    {      /* We are inside _dl_receive_error.  Call the user supplied	 handler and resume the work.  The receiver will still be	 installed.  */      (*receiver) (errcode, objname, errstring);    }  else    {      /* Lossage while resolving the program's own symbols is always fatal.  */      extern char **_dl_argv;	/* Set in rtld.c at startup.  */      char buffer[1024];      _dl_sysdep_fatal (_dl_argv[0] ?: "<program name unknown>",			": error in loading shared libraries: ",			objname ?: "", objname ? ": " : "",			errstring, errcode ? ": " : "",			(errcode			 ? _strerror_internal (errcode, buffer, sizeof buffer)			 : ""), "\n", NULL);    }}