From 2449ae7b2da24c9940962304a3e44bc80e389265 Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Thu, 10 Aug 2017 13:40:22 +0200 Subject: ld.so: Introduce struct dl_exception This commit separates allocating and raising exceptions. This simplifies catching and re-raising them because it is no longer necessary to make a temporary, on-stack copy of the exception message. --- ChangeLog | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) (limited to 'ChangeLog') diff --git a/ChangeLog b/ChangeLog index 6648ce1676..dcf86261ca 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,63 @@ +2017-08-10 Florian Weimer + + Introduce ld.so exceptions. + * sysdeps/generic/ldsodefs.h (struct dl_exception): Define. + (_dl_exception_create, _dl_exception_create_format) + (_dl_exception_free, _dl_signal_exception, _dl_signal_cexception) + (_dl_catch_exception): Declare. + (_dl_catch_error): Update comment. + * elf/dl-error-skeleton.c (struct catch): Replace objname, + errstring, malloced members with exception member. + (_dl_out_of_memory): Remove. + (fatal_error): New function, extracted from _dl_signal_error. + (_dl_signal_exception, _dl_signal_cexception): New functions. + (_dl_signal_error): Call _dl_exception_create to allocate an + exception object. + (_dl_catch_exception): New function, based on _dl_catch_error. + (_dl_catch_error): Implement using _dl_catch_exception. + * elf/dl-exception.c: New file. + * elf/Makefile (dl-routines): Add dl-exception. + (elide-routines.os): Likewise. + * elf/Version (ld/GLIBC_PRIVATE): Add _dl_exception_create, + _dl_exception_create_format, _dl_exception_free. + * elf/dl-deps.c (_dl_map_object_deps): Use _dl_catch_exception and + _dl_signal_exception. + * elf/dl-lookup.c (make_string): Remove. + (_dl_lookup_symbol_x): Use _dl_exception_create_format, + _dl_signal_cexception, _dl_exception_free. + * elf/dl-open.c (_dl_open): Use _dl_catch_exception and + _dl_signal_exception. + * elf/dl-sym.c (do_sym): Likewise. + * elf/dl-version.c (make_string): Remove. + (match_symbol): Use _dl_exception_create_format, + _dl_signal_cexception, _dl_exception_free. + (_dl_check_map_versions): Likewise. + * sysdeps/generic/localplt.data (ld.so): Add _dl_signal_exception, + _dl_catch_exception. + * sysdeps/unix/sysv/linux/aarch64/localplt.data (ld.so): Likewise. + * sysdeps/unix/sysv/linux/alpha/localplt.data (ld.so): Likewise. + * sysdeps/unix/sysv/linux/arm/localplt.data (ld.so): Likewise. + * sysdeps/unix/sysv/linux/hppa/localplt.data (ld.so): Likewise. + * sysdeps/unix/sysv/linux/i386/localplt.data (ld.so): Likewise. + * sysdeps/unix/sysv/linux/ia64/localplt.data (ld.so): Likewise. + * sysdeps/unix/sysv/linux/m68k/localplt.data (ld.so): Likewise. + * sysdeps/unix/sysv/linux/microblaze/localplt.data (ld.so): + Likewise. + * sysdeps/unix/sysv/linux/nios2/localplt.data (ld.so): Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/localplt.data + (ld.so): Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/localplt.data + (ld.so): Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/localplt.data (ld.so): + Likewise. + * sysdeps/unix/sysv/linux/s390/localplt.data (ld.so): Likewise. + * sysdeps/unix/sysv/linux/sh/localplt.data (ld.so): Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc32/localplt.data (ld.so): + Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/localplt.data (ld.so): + Likewise. + * sysdeps/x86_64/localplt.data (ld.so): Likewise. + 2017-08-10 Florian Weimer * inet/net-internal.h (__inet6_scopeid_pton): Remove -- cgit 1.4.1