mbox

[v6,0/4] Args adjustment with ./ld.so exe [BZ #23293]

Message ID cover.1651757640.git.szabolcs.nagy@arm.com
Headers show

Message

Szabolcs Nagy May 5, 2022, 1:58 p.m. UTC
The Hurd ld.so start code had to be adjusted. This revealed that
the fix actually cuts across abstraction layers: fiddles with
ELF entry stack layout in generic code, skipping the intermediate
OS sysdep layer. If the OS layer ever wants to do something more
complicated with the args then the interface contract with dl_main
will have to be reevaluated.

I ran cross tests for i686-gnu, but not execution tests, so the
changes in sysdeps/mach/hurd/dl-sysdep.c require a review.

The patches are in the nsz/bug23293-v6 branch.

Szabolcs Nagy (4):
  rtld: Use generic argv adjustment in ld.so [BZ #23293]
  rtld: Remove DL_ARGV_NOT_RELRO and make _dl_skip_args const
  linux: Add a getauxval test [BZ #23293]
  aarch64: Move ld.so _start to separate file and drop _dl_skip_args

 elf/rtld.c                               | 83 ++++++++++++++++++------
 sysdeps/aarch64/Makefile                 |  1 +
 sysdeps/aarch64/dl-machine.h             | 77 +---------------------
 sysdeps/aarch64/dl-start.S               | 53 +++++++++++++++
 sysdeps/aarch64/dl-sysdep.h              |  4 --
 sysdeps/alpha/dl-sysdep.h                | 23 -------
 sysdeps/arc/dl-sysdep.h                  |  4 --
 sysdeps/arm/dl-sysdep.h                  |  4 --
 sysdeps/csky/dl-sysdep.h                 | 23 -------
 sysdeps/generic/ldsodefs.h               | 13 +---
 sysdeps/ia64/dl-sysdep.h                 | 23 -------
 sysdeps/mach/hurd/dl-sysdep.c            | 30 ++++-----
 sysdeps/nios2/dl-sysdep.h                |  4 --
 sysdeps/s390/s390-32/dl-sysdep.h         | 23 -------
 sysdeps/sparc/dl-sysdep.h                | 23 -------
 sysdeps/unix/sysv/linux/Makefile         |  1 +
 sysdeps/unix/sysv/linux/ia64/dl-sysdep.h |  4 --
 sysdeps/unix/sysv/linux/tst-getauxval.c  | 74 +++++++++++++++++++++
 18 files changed, 209 insertions(+), 258 deletions(-)
 create mode 100644 sysdeps/aarch64/dl-start.S
 delete mode 100644 sysdeps/alpha/dl-sysdep.h
 delete mode 100644 sysdeps/csky/dl-sysdep.h
 delete mode 100644 sysdeps/ia64/dl-sysdep.h
 delete mode 100644 sysdeps/s390/s390-32/dl-sysdep.h
 delete mode 100644 sysdeps/sparc/dl-sysdep.h
 create mode 100644 sysdeps/unix/sysv/linux/tst-getauxval.c