summaryrefslogtreecommitdiff
path: root/ldso
diff options
context:
space:
mode:
Diffstat (limited to 'ldso')
-rw-r--r--ldso/libdl/Makefile.in6
-rw-r--r--ldso/libdl/libdl.c2
2 files changed, 7 insertions, 1 deletions
diff --git a/ldso/libdl/Makefile.in b/ldso/libdl/Makefile.in
index 152185e37..be236c83f 100644
--- a/ldso/libdl/Makefile.in
+++ b/ldso/libdl/Makefile.in
@@ -20,7 +20,11 @@ endif
CFLAGS-libdl.c := -DLDSO_ELFINTERP=\"$(TARGET_ARCH)/elfinterp.c\"
LDFLAGS-$(UCLIBC_FORMAT_DSBT_ELF)-libdl.so := -Wl,--dsbt-index=3
-LDFLAGS-libdl.so := $(LDFLAGS) -Wl,-fini,dl_cleanup
+LDFLAGS-libdl.so := $(LDFLAGS)
+
+ifeq ($(LDSO_NO_CLEANUP),)
+LDFLAGS-libdl.so += -Wl,-fini,dl_cleanup
+endif
LIBS-libdl.so := $(LIBS) $(ldso)
diff --git a/ldso/libdl/libdl.c b/ldso/libdl/libdl.c
index 4ecd1c55e..2c8dfbb79 100644
--- a/ldso/libdl/libdl.c
+++ b/ldso/libdl/libdl.c
@@ -260,6 +260,7 @@ remove_slotinfo(size_t idx, struct dtv_slotinfo_list *listp, size_t disp,
}
#endif
+#ifndef __LDSO_NO_CLEANUP__
void dl_cleanup(void) __attribute__ ((destructor));
void dl_cleanup(void)
{
@@ -270,6 +271,7 @@ void dl_cleanup(void)
do_dlclose(h, 1);
}
}
+#endif
static ptrdiff_t _dl_build_local_scope (struct elf_resolve **list,
struct elf_resolve *map)