about summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2009-09-28 03:19:58 -0700
committerUlrich Drepper <drepper@redhat.com>2009-09-28 03:19:58 -0700
commit4fd894620f22dc189d3f8339e39c630c4d05421b (patch)
tree23ec71ebe63281d73d43f225bb517280138e5543
parent0d1804061a2c27ffe511a5f9df572ad9748d8219 (diff)
downloadglibc-4fd894620f22dc189d3f8339e39c630c4d05421b.tar.gz
glibc-4fd894620f22dc189d3f8339e39c630c4d05421b.tar.xz
glibc-4fd894620f22dc189d3f8339e39c630c4d05421b.zip
Fix missing reloc dependency
When DL_LOOKUP_ADD_DEPENDENCY was introduced a few callers of
_dl_lookup_versioned_symbol were not properly adjusted.  One of them
survived until now.
-rw-r--r--ChangeLog5
-rw-r--r--elf/dl-reloc.c9
2 files changed, 8 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 5dcdbfcf01..db2c0a1ff9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-09-25  Andreas Schwab  <schwab@redhat.com>
+
+	* elf/dl-reloc.c (RESOLVE_MAP): Always pass
+	DL_LOOKUP_ADD_DEPENDENCY to _dl_lookup_symbol_x.
+
 2009-09-28  Samuel Thibault  <samuel.thibault@ens-lyon.org>
 
 	* bits/termios.h [__USE_UNIX98] (IXANY): Define macro.
diff --git a/elf/dl-reloc.c b/elf/dl-reloc.c
index 680caadd65..6c0069147d 100644
--- a/elf/dl-reloc.c
+++ b/elf/dl-reloc.c
@@ -254,14 +254,11 @@ _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[],
 	     l->l_lookup_cache.type_class = _tc;			      \
 	     l->l_lookup_cache.sym = (*ref);				      \
 	     const struct r_found_version *v = NULL;			      \
-	     int flags = DL_LOOKUP_ADD_DEPENDENCY;			      \
 	     if ((version) != NULL && (version)->hash != 0)		      \
-	       {							      \
-		 v = (version);						      \
-		 flags = 0;						      \
-	       }							      \
+	       v = (version);						      \
 	     _lr = _dl_lookup_symbol_x (strtab + (*ref)->st_name, l, (ref),   \
-					scope, v, _tc, flags, NULL);	      \
+					scope, v, _tc,			      \
+					DL_LOOKUP_ADD_DEPENDENCY, NULL);      \
 	     l->l_lookup_cache.ret = (*ref);				      \
 	     l->l_lookup_cache.value = _lr; }))				      \
      : l)