mbox

[v3,0/3] Remove prelink support

Message ID 20220210121754.862331-1-adhemerval.zanella@linaro.org
Headers

Message

Adhemerval Zanella Feb. 10, 2022, 12:17 p.m. UTC
  As discussed recently on maillist [1], prelink is deprecated in
practice:

  * There is no active development neither maintainace.
  * It misses supports for some architectures, even for architecture
    wildly deployed such as aarch64 [2].
  * It does not work with recent security hardening such as PIE.
  * Nor it will work on future ABI additions such as DT_RELR.
  * Even when PIE is not enabled its coverity if flacky, with some
    binaries showing corrupted state [3].
  * Recent glibc changes to support different tools (such as lld)
    showed inherent issue with current prelink support.

The first patch removes both prelink support by the loader and the
LD_TRACE_PRELINKING.

The remove of mtrace TRACE_PRELINKING usage is on its own patch
because it changes LD_TRACE_LOADED_OBJECTS semantic to support
dumping the executable loading address and fixes mtrace for non
PIE similar to BZ#22716.

Finally the third part removed LD_USE_LOAD_BIAS, which is used
solely for try support prelink with PIE.

(This is the version I will commit shortly)

[1] https://sourceware.org/pipermail/libc-alpha/2022-January/135520.html
[2] https://sourceware.org/pipermail/libc-alpha/2022-January/135522.html
[3] https://embed.endfa.net/yocto-cross-prelink-1/

Adhemerval Zanella (3):
  elf: Remove prelink support
  malloc: Remove LD_TRACE_PRELINKING usage from mtrace
  elf: Remove LD_USE_LOAD_BIAS

 NEWS                                   |  11 +-
 elf/Makefile                           |  16 --
 elf/dl-conflict.c                      |  77 -------
 elf/dl-deps.c                          |  66 ------
 elf/dl-error-skeleton.c                |   4 +-
 elf/dl-load.c                          |   3 +-
 elf/dl-lookup.c                        | 161 --------------
 elf/dl-main.h                          |   3 +
 elf/dl-map-segments.h                  |   3 +-
 elf/dl-support.c                       |   1 -
 elf/do-rel.h                           |   3 -
 elf/rtld.c                             | 283 ++++++-------------------
 elf/tst-prelink-cmp.c                  |  49 -----
 elf/tst-prelink.c                      |  29 ---
 include/link.h                         |   4 -
 malloc/mtrace.pl                       |  55 ++---
 sysdeps/alpha/dl-machine.h             |  15 --
 sysdeps/arm/dl-machine.h               |   4 -
 sysdeps/generic/ldsodefs.h             |  16 --
 sysdeps/generic/unsecvars.h            |   1 -
 sysdeps/i386/dl-machine.h              |  16 +-
 sysdeps/or1k/dl-machine.h              |   4 -
 sysdeps/powerpc/powerpc32/dl-machine.h |  31 +--
 sysdeps/powerpc/powerpc64/dl-machine.h |  37 ----
 sysdeps/s390/s390-32/dl-machine.h      |  22 +-
 sysdeps/s390/s390-64/dl-machine.h      |  22 +-
 sysdeps/sh/dl-machine.h                |   2 +-
 sysdeps/sparc/sparc32/dl-machine.h     |  52 +----
 sysdeps/sparc/sparc64/dl-machine.h     |  72 +------
 sysdeps/x86_64/dl-machine.h            |  48 ++---
 30 files changed, 171 insertions(+), 939 deletions(-)
 delete mode 100644 elf/dl-conflict.c
 delete mode 100644 elf/tst-prelink-cmp.c
 delete mode 100644 elf/tst-prelink.c