about summary refs log tree commit diff
path: root/ChangeLog
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2019-06-28 10:12:50 +0200
committerFlorian Weimer <fweimer@redhat.com>2019-06-28 10:15:38 +0200
commitf0b2132b35248c1f4a80f62a2c38cddcc802aa8c (patch)
tree32e3b30bba3d07b48c40035d8a4011ed39a212ef /ChangeLog
parent17432d7150bdab3bce2ea66c70ad6c920f54077a (diff)
downloadglibc-f0b2132b35248c1f4a80f62a2c38cddcc802aa8c.tar.gz
glibc-f0b2132b35248c1f4a80f62a2c38cddcc802aa8c.tar.xz
glibc-f0b2132b35248c1f4a80f62a2c38cddcc802aa8c.zip
ld.so: Support moving versioned symbols between sonames [BZ #24741]
This change should be fully backwards-compatible because the old
code aborted the load if a soname mismatch was encountered
(instead of searching further for a matching symbol).  This means
that no different symbols are found.

The soname check was explicitly disabled for the skip_map != NULL
case.  However, this only happens with dl(v)sym and RTLD_NEXT,
and those lookups do not come with a verneed entry that could be used
for the check.

The error check was already explicitly disabled for the skip_map !=
NULL case, that is, when dl(v)sym was called with RTLD_NEXT.  But
_dl_vsym always sets filename in the struct r_found_version argument
to NULL, so the check was not active anyway.  This means that
symbol lookup results for the skip_map != NULL case do not change,
either.
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog29
1 files changed, 29 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 07d1bd648b..2bb4d832a6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,34 @@
 2019-06-28  Florian Weimer  <fweimer@redhat.com>
 
+	[BZ #24741]
+	* elf/dl-lookup.c (do_lookup_x): Do not fail if there is a soname
+	mismatch in a versioned symbol reference.
+	(_dl_lookup_symbol_x): Do not report soname mismatch failures.
+	* elf/Makefile [$(build-shared)] (tests): Add tst-sonamemove-link,
+	tst-sonamemove-dlopen.
+	(module-names): Add tst-sonamemove-linkmod1,
+	tst-sonamemove-runmod1, tst-sonamemove-runmod2.
+	(LDFLAGS-tst-sonamemove-linkmod1.so): Set.
+	(LDFLAGS-tst-sonamemove-runmod1.so): Likewise.
+	(LDFLAGS-tst-sonamemove-runmod2.so): Likewise.
+	(tst-sonamemove-runmod1.so): Link against
+	tst-sonamemove-runmod2.so.
+	(tst-sonamemove-link): Link against tst-sonamemove-linkmod1.so.
+	(tst-sonamemove-link.out): Depend on tst-sonamemove-runmod1.so,
+	tst-sonamemove-runmod2.so.
+	(tst-sonamemove-dlopen): Link with -ldl.
+	(tst-sonamemove-dlopen.out): Likewise.
+	* elf/tst-sonamemove-link.c: New file.
+	* elf/tst-sonamemove-dlopen.c: Likewise.
+	* elf/tst-sonamemove-linkmod1.c: Likewise.
+	* elf/tst-sonamemove-linkmod1.map: Likewise.
+	* elf/tst-sonamemove-runmod1.c: Likewise.
+	* elf/tst-sonamemove-runmod1.map: Likewise.
+	* elf/tst-sonamemove-runmod2.c: Likewise.
+	* elf/tst-sonamemove-runmod2.map: Likewise.
+
+2019-06-28  Florian Weimer  <fweimer@redhat.com>
+
 	* support/xdlfcn.h (xdlvsym): Declare function.
 	* support/xdlfcn.c (xdlvsym): Define funciton.