diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2022-01-13 17:58:00 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2022-02-10 09:16:12 -0300 |
commit | 6628c742b2c16e785d3c884d9deeda5adb30ca12 (patch) | |
tree | 493580e40aef171896584e1d3d32bbe14c15140b /elf/dl-deps.c | |
parent | 8c8510ab2790039e58995ef3a22309582413d3ff (diff) | |
download | glibc-6628c742b2c16e785d3c884d9deeda5adb30ca12.zip glibc-6628c742b2c16e785d3c884d9deeda5adb30ca12.tar.gz glibc-6628c742b2c16e785d3c884d9deeda5adb30ca12.tar.bz2 |
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.c | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/elf/dl-deps.c b/elf/dl-deps.c index c8bab5c..a2fc278 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) |