about summary refs log tree commit diff
path: root/ChangeLog
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2017-08-10 13:40:22 +0200
committerFlorian Weimer <fweimer@redhat.com>2017-08-10 16:54:57 +0200
commit2449ae7b2da24c9940962304a3e44bc80e389265 (patch)
treec2cfdcfc3a90731d2da26dda79984eda95e9079e /ChangeLog
parentf87cc2bfba9b844da48a63441c6099342b1551c7 (diff)
downloadglibc-2449ae7b2da24c9940962304a3e44bc80e389265.tar.gz
glibc-2449ae7b2da24c9940962304a3e44bc80e389265.tar.xz
glibc-2449ae7b2da24c9940962304a3e44bc80e389265.zip
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.
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog60
1 files changed, 60 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 6648ce1676..dcf86261ca 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,65 @@
 2017-08-10  Florian Weimer  <fweimer@redhat.com>
 
+	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  <fweimer@redhat.com>
+
 	* inet/net-internal.h (__inet6_scopeid_pton): Remove
 	attribute_hidden, internal_function.
 	* inet/inet6_scopeid_pton.c (__inet6_scopeid_pton): Remove