about summary refs log tree commit diff
path: root/elf/dl-lookup.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1999-02-22 18:05:04 +0000
committerUlrich Drepper <drepper@redhat.com>1999-02-22 18:05:04 +0000
commit3f933dc2ef1aa201cd277a480b3954afa1f62b07 (patch)
tree834ea1edc2342589cf5f5e3bca59fa1f7028ed2a /elf/dl-lookup.c
parent69b3b3cb3873d59edfebae0cb7db58166d78f3a6 (diff)
downloadglibc-3f933dc2ef1aa201cd277a480b3954afa1f62b07.tar.gz
glibc-3f933dc2ef1aa201cd277a480b3954afa1f62b07.tar.xz
glibc-3f933dc2ef1aa201cd277a480b3954afa1f62b07.zip
Update.
1999-02-23  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* elf/dl-error.c (_dl_signal_cerror): New function.
	(_dl_signal_error): Don't call receiver function.
	* elf/dl-lookup.c (_dl_lookup_symbol): Call _dl_signal_cerror
	instead of _dl_signal_error when reporting references to undefined
	symbols or versions.
	(_dl_lookup_versioned_symbol): Likewise.
	(_dl_lookup_versioned_symbol_skip): Likewise.
	* elf/dl-version.c (match_symbol): Likewise.

	* elf/ldsodefs.h: Declare _dl_signal_cerror.

	* misc/getttyent.c (getttyent): Release lock on stream later to
	also protect global variable zapchar.
Diffstat (limited to 'elf/dl-lookup.c')
-rw-r--r--elf/dl-lookup.c52
1 files changed, 28 insertions, 24 deletions
diff --git a/elf/dl-lookup.c b/elf/dl-lookup.c
index 9a691b72b0..16173c9068 100644
--- a/elf/dl-lookup.c
+++ b/elf/dl-lookup.c
@@ -96,10 +96,10 @@ _dl_lookup_symbol (const char *undef_name, const ElfW(Sym) **ref,
     {
       if (*ref == NULL || ELFW(ST_BIND) ((*ref)->st_info) != STB_WEAK)
 	/* We could find no value for a strong reference.  */
-	_dl_signal_error (0, (reference_name  && reference_name[0]
-			      ? reference_name
-			      : (_dl_argv[0] ?: "<main program>")),
-			  make_string (undefined_msg, undef_name));
+	_dl_signal_cerror (0, (reference_name  && reference_name[0]
+			       ? reference_name
+			       : (_dl_argv[0] ?: "<main program>")),
+			   make_string (undefined_msg, undef_name));
       *ref = NULL;
       return 0;
     }
@@ -199,29 +199,33 @@ _dl_lookup_versioned_symbol (const char *undef_name, const ElfW(Sym) **ref,
 	break;
 
       if (res < 0)
-	/* Oh, oh.  The file named in the relocation entry does not
-	   contain the needed symbol.  */
-	_dl_signal_error (0, (reference_name && reference_name[0]
-			      ? reference_name
-			      : (_dl_argv[0] ?: "<main program>")),
-			  make_string ("symbol ", undef_name, ", version ",
-				       version->name,
-				       " not defined in file ",
-				       version->filename,
-				       " with link time reference",
-				       res == -2
-				       ? " (no version symbols)" : ""));
+	{
+	  /* Oh, oh.  The file named in the relocation entry does not
+	     contain the needed symbol.  */
+	  _dl_signal_cerror (0, (reference_name && reference_name[0]
+				 ? reference_name
+				 : (_dl_argv[0] ?: "<main program>")),
+			     make_string ("symbol ", undef_name, ", version ",
+					  version->name,
+					  " not defined in file ",
+					  version->filename,
+					  " with link time reference",
+					  res == -2
+					  ? " (no version symbols)" : ""));
+	  *ref = NULL;
+	  return 0;
+	}
     }
 
   if (current_value.s == NULL)
     {
       if (*ref == NULL || ELFW(ST_BIND) ((*ref)->st_info) != STB_WEAK)
 	/* We could find no value for a strong reference.  */
-	_dl_signal_error (0, (reference_name && reference_name[0]
-			      ? reference_name
-			      : (_dl_argv[0] ?: "<main program>")),
-			  make_string (undefined_msg, undef_name,
-				       ", version ", version->name ?: NULL));
+	_dl_signal_cerror (0, (reference_name && reference_name[0]
+			       ? reference_name
+			       : (_dl_argv[0] ?: "<main program>")),
+			   make_string (undefined_msg, undef_name,
+					", version ", version->name ?: NULL));
       *ref = NULL;
       return 0;
     }
@@ -281,9 +285,9 @@ _dl_lookup_versioned_symbol_skip (const char *undef_name,
 	  char buf[sizeof undefined_msg + len];
 	  __mempcpy (__mempcpy (buf, undefined_msg, sizeof undefined_msg - 1),
 		     undef_name, len + 1);
-	  _dl_signal_error (0, (reference_name && reference_name[0]
-				? reference_name
-				: (_dl_argv[0] ?: "<main program>")), buf);
+	  _dl_signal_cerror (0, (reference_name && reference_name[0]
+				 ? reference_name
+				 : (_dl_argv[0] ?: "<main program>")), buf);
 	}
       *ref = NULL;
       return 0;