From d0c48d4a7fbb39a7a4c91b833eb3d4f5ab7ba389 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Thu, 8 Aug 2002 17:51:16 +0000 Subject: For some perverse reason we were not registering destructors for dlopen'd libraries. This fixes that. -Erik --- ldso/libdl/dlib.c | 4 ++++ ldso/libdl/libdl.c | 4 ++++ 2 files changed, 8 insertions(+) (limited to 'ldso') diff --git a/ldso/libdl/dlib.c b/ldso/libdl/dlib.c index 3c1eab43a..d68ff1356 100644 --- a/ldso/libdl/dlib.c +++ b/ldso/libdl/dlib.c @@ -225,6 +225,10 @@ void *_dlopen(const char *libname, int flag) dl_elf_init = (int (*)(void)) (tpnt->loadaddr + tpnt->dynamic_info[DT_INIT]); (*dl_elf_init) (); } + if (tpnt->dynamic_info[DT_FINI]) { + atexit((void (*)(void)) (tpnt->loadaddr + tpnt->dynamic_info[DT_FINI])); + } + } #ifdef USE_CACHE diff --git a/ldso/libdl/libdl.c b/ldso/libdl/libdl.c index 3c1eab43a..d68ff1356 100644 --- a/ldso/libdl/libdl.c +++ b/ldso/libdl/libdl.c @@ -225,6 +225,10 @@ void *_dlopen(const char *libname, int flag) dl_elf_init = (int (*)(void)) (tpnt->loadaddr + tpnt->dynamic_info[DT_INIT]); (*dl_elf_init) (); } + if (tpnt->dynamic_info[DT_FINI]) { + atexit((void (*)(void)) (tpnt->loadaddr + tpnt->dynamic_info[DT_FINI])); + } + } #ifdef USE_CACHE -- cgit v1.2.3