about summary refs log tree commit diff
path: root/elf/dl-deps.c
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2022-01-13 17:58:00 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2022-02-10 09:16:12 -0300
commit6628c742b2c16e785d3c884d9deeda5adb30ca12 (patch)
tree493580e40aef171896584e1d3d32bbe14c15140b /elf/dl-deps.c
parent8c8510ab2790039e58995ef3a22309582413d3ff (diff)
downloadglibc-6628c742b2c16e785d3c884d9deeda5adb30ca12.tar.gz
glibc-6628c742b2c16e785d3c884d9deeda5adb30ca12.tar.xz
glibc-6628c742b2c16e785d3c884d9deeda5adb30ca12.zip
elf: Remove prelink support
Prelinked binaries and libraries still work, the dynamic tags
DT_GNU_PRELINKED, DT_GNU_LIBLIST, DT_GNU_CONFLICT just ignored
(meaning the process is reallocated as default).

The loader environment variable TRACE_PRELINKING is also removed,
since it used solely on prelink.

Checked on x86_64-linux-gnu, i686-linux-gnu, and aarch64-linux-gnu.

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
Diffstat (limited to 'elf/dl-deps.c')
-rw-r--r--elf/dl-deps.c66
1 files changed, 0 insertions, 66 deletions
diff --git a/elf/dl-deps.c b/elf/dl-deps.c
index c8bab5cad5..a2fc278256 100644
--- a/elf/dl-deps.c
+++ b/elf/dl-deps.c
@@ -68,22 +68,6 @@ openaux (void *a)
 			      args->map->l_ns);
 }
 
-static ptrdiff_t
-_dl_build_local_scope (struct link_map **list, struct link_map *map)
-{
-  struct link_map **p = list;
-  struct link_map **q;
-
-  *p++ = map;
-  map->l_reserved = 1;
-  if (map->l_initfini)
-    for (q = map->l_initfini + 1; *q; ++q)
-      if (! (*q)->l_reserved)
-	p += _dl_build_local_scope (p, *q);
-  return p - list;
-}
-
-
 /* We use a very special kind of list to track the path
    through the list of loaded shared objects.  We have to
    produce a flat list with unique members of all involved objects.
@@ -504,56 +488,6 @@ _dl_map_object_deps (struct link_map *map,
       runp->map->l_reserved = 0;
     }
 
-  if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_PRELINK, 0) != 0
-      && map == GL(dl_ns)[LM_ID_BASE]._ns_loaded)
-    {
-      /* If we are to compute conflicts, we have to build local scope
-	 for each library, not just the ultimate loader.  */
-      for (i = 0; i < nlist; ++i)
-	{
-	  struct link_map *l = map->l_searchlist.r_list[i];
-	  unsigned int j, cnt;
-
-	  /* The local scope has been already computed.  */
-	  if (l == map
-	      || (l->l_local_scope[0]
-		  && l->l_local_scope[0]->r_nlist) != 0)
-	    continue;
-
-	  if (l->l_info[AUXTAG] || l->l_info[FILTERTAG])
-	    {
-	      /* As current DT_AUXILIARY/DT_FILTER implementation needs to be
-		 rewritten, no need to bother with prelinking the old
-		 implementation.  */
-	      _dl_signal_error (EINVAL, l->l_name, NULL, N_("\
-Filters not supported with LD_TRACE_PRELINKING"));
-	    }
-
-	  cnt = _dl_build_local_scope (l_initfini, l);
-	  assert (cnt <= nlist);
-	  for (j = 0; j < cnt; j++)
-	    {
-	      l_initfini[j]->l_reserved = 0;
-	      if (j && __builtin_expect (l_initfini[j]->l_info[DT_SYMBOLIC]
-					 != NULL, 0))
-		l->l_symbolic_in_local_scope = true;
-	    }
-
-	  l->l_local_scope[0] =
-	    (struct r_scope_elem *) malloc (sizeof (struct r_scope_elem)
-					    + (cnt
-					       * sizeof (struct link_map *)));
-	  if (l->l_local_scope[0] == NULL)
-	    _dl_signal_error (ENOMEM, map->l_name, NULL,
-			      N_("cannot allocate symbol search list"));
-	  l->l_local_scope[0]->r_nlist = cnt;
-	  l->l_local_scope[0]->r_list =
-	    (struct link_map **) (l->l_local_scope[0] + 1);
-	  memcpy (l->l_local_scope[0]->r_list, l_initfini,
-		  cnt * sizeof (struct link_map *));
-	}
-    }
-
   /* Maybe we can remove some relocation dependencies now.  */
   struct link_map_reldeps *l_reldeps = NULL;
   if (map->l_reldeps != NULL)