This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 0/3] Full removal of libc.so/ld.so interposition (bug 25486)


Apart from malloc, the other use of symbol interposition is the ld.so
exception handling mechanism.

We can (carefully) use some form of thread-local storage in the loader
now that Hurd has THREAD_GETMEM/THREAD_SETMEM.  This leads to a nice
simplification of this code.

Tested on x86_64-linux-gnu and i686-linux-gnu.  Full
build-many-glibcs.py with the scripts/localplt.awk change is still
running.  A previous build was fine except on C-SKY, hence the second
commit in this series.

Thanks,
Florian

Florian Weimer (3):
  ld.so: Export tls_init_tp_called as __rtld_tls_init_tp_called
  scripts/localplt.awk: Handle DT_JMPREL with empty PLT (for C-SKY)
  elf: Rework exception handling in the dynamic loader [BZ #25486]

 elf/Makefile                                  |   6 +-
 elf/Versions                                  |   6 -
 elf/{dl-error-skeleton.c => dl-catch.c}       | 139 +++++++++---------
 elf/dl-error-minimal.c                        |  23 ---
 elf/dl-error.c                                |  27 ----
 elf/rtld.c                                    |  12 +-
 nptl/descr.h                                  |   3 +
 scripts/localplt.awk                          |  18 ++-
 sysdeps/generic/ldsodefs.h                    |  11 +-
 sysdeps/generic/localplt.data                 |   5 -
 sysdeps/mach/hurd/i386/localplt.data          |   9 +-
 sysdeps/mach/hurd/i386/tls.h                  |   3 +
 sysdeps/unix/sysv/linux/aarch64/localplt.data |   5 -
 sysdeps/unix/sysv/linux/alpha/localplt.data   |   5 -
 sysdeps/unix/sysv/linux/arm/localplt.data     |   5 -
 sysdeps/unix/sysv/linux/csky/localplt.data    |   5 -
 sysdeps/unix/sysv/linux/hppa/localplt.data    |   5 -
 sysdeps/unix/sysv/linux/i386/localplt.data    |   5 -
 sysdeps/unix/sysv/linux/ia64/localplt.data    |   5 -
 .../sysv/linux/m68k/coldfire/localplt.data    |   5 -
 .../unix/sysv/linux/m68k/m680x0/localplt.data |   5 -
 .../unix/sysv/linux/microblaze/localplt.data  |   5 -
 sysdeps/unix/sysv/linux/nios2/localplt.data   |   5 -
 .../linux/powerpc/powerpc32/fpu/localplt.data |   5 -
 .../powerpc/powerpc32/nofpu/localplt.data     |   5 -
 .../linux/powerpc/powerpc64/localplt.data     |   5 -
 sysdeps/unix/sysv/linux/riscv/localplt.data   |   5 -
 sysdeps/unix/sysv/linux/s390/localplt.data    |   5 -
 sysdeps/unix/sysv/linux/sh/localplt.data      |   5 -
 .../sysv/linux/sparc/sparc32/localplt.data    |   5 -
 .../sysv/linux/sparc/sparc64/localplt.data    |   5 -
 sysdeps/x86_64/localplt.data                  |   5 -
 32 files changed, 114 insertions(+), 248 deletions(-)
 rename elf/{dl-error-skeleton.c => dl-catch.c} (80%)
 delete mode 100644 elf/dl-error-minimal.c
 delete mode 100644 elf/dl-error.c

-- 
2.24.1


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]