diff options
author | Florian Weimer <fweimer@redhat.com> | 2023-05-30 13:25:50 +0200 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2023-05-30 13:25:50 +0200 |
commit | d0f07f7df8d9758c838674b70144ac73bcbd1634 (patch) | |
tree | bf73fe79a9c8491aa6646a5b194c57e20b6a0871 /elf/Makefile | |
parent | 3eed5f3a1ee356969afb403a1cf18d06f8d2d98a (diff) | |
download | glibc-d0f07f7df8d9758c838674b70144ac73bcbd1634.tar.gz glibc-d0f07f7df8d9758c838674b70144ac73bcbd1634.tar.xz glibc-d0f07f7df8d9758c838674b70144ac73bcbd1634.zip |
elf: Make more functions available for binding during dlclose (bug 30425)
Previously, after destructors for a DSO have been invoked, ld.so refused to bind against that DSO in all cases. Relax this restriction somewhat if the referencing object is itself a DSO that is being unloaded. This assumes that the symbol reference is not going to be stored anywhere. The situation in the test case can arise fairly easily with C++ and objects that are built with different optimization levels and therefore define different functions with vague linkage. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Diffstat (limited to 'elf/Makefile')
-rw-r--r-- | elf/Makefile | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/elf/Makefile b/elf/Makefile index 264737110b..3bfc305d98 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -396,6 +396,7 @@ tests += \ tst-debug1 \ tst-deep1 \ tst-dl-is_dso \ + tst-dlclose-lazy \ tst-dlmodcount \ tst-dlmopen-dlerror \ tst-dlmopen-gethostbyname \ @@ -816,6 +817,8 @@ modules-names += \ tst-dl_find_object-mod7 \ tst-dl_find_object-mod8 \ tst-dl_find_object-mod9 \ + tst-dlclose-lazy-mod1 \ + tst-dlclose-lazy-mod2 \ tst-dlmopen-dlerror-mod \ tst-dlmopen-gethostbyname-mod \ tst-dlmopen-twice-mod1 \ @@ -3001,3 +3004,8 @@ $(objpfx)tst-sprof-basic.out: tst-sprof-basic.sh $(objpfx)tst-sprof-basic '$(run-program-env)' > $@; \ $(evaluate-test) generated += tst-sprof-mod.so.profile + +LDFLAGS-tst-dlclose-lazy-mod1.so = -Wl,-z,lazy,--no-as-needed +$(objpfx)tst-dlclose-lazy-mod1.so: $(objpfx)tst-dlclose-lazy-mod2.so +$(objpfx)tst-dlclose-lazy.out: \ + $(objpfx)tst-dlclose-lazy-mod1.so $(objpfx)tst-dlclose-lazy-mod2.so |