summaryrefslogtreecommitdiff
path: root/ldso/ldso/ldso.c
diff options
context:
space:
mode:
authorJoakim Tjernlund <joakim.tjernlund@transmode.se>2005-05-28 23:44:06 +0000
committerJoakim Tjernlund <joakim.tjernlund@transmode.se>2005-05-28 23:44:06 +0000
commitd1b0dffff4be58782a15ebec6595de2447f63dc2 (patch)
treed07c74419c3531984ae620899fc9a0e9cf892797 /ldso/ldso/ldso.c
parent83bb7f2166ccec164942b010130b285676d7cf3b (diff)
Add Peter Mazinger fini/crt compat patch. Select DL_FINI_CRT_COMPAT to
be able to run apps built with 0.9.27. This also renames __uClibc_start_main to __uClibc_main. This compat option should be removed some time after 0.9.28 is released. Let me know if you don't like this change.
Diffstat (limited to 'ldso/ldso/ldso.c')
-rw-r--r--ldso/ldso/ldso.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c
index c60815aff..c0f685802 100644
--- a/ldso/ldso/ldso.c
+++ b/ldso/ldso/ldso.c
@@ -806,6 +806,16 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, unsigned long load_addr,
(*dl_elf_func) ();
}
}
+#ifdef _DL_FINI_CRT_COMPAT
+ /* arches that have moved their ldso FINI handling should skip this part */
+ {
+ int (*_dl_atexit) (void *) = (int (*)(void *)) (intptr_t) _dl_find_hash("atexit",
+ _dl_symbol_tables, NULL, ELF_RTYPE_CLASS_PLT);
+
+ if (_dl_atexit)
+ (*_dl_atexit) (_dl_fini);
+ }
+#endif
/* Find the real malloc function and make ldso functions use that from now on */
_dl_malloc_function = (void* (*)(size_t)) (intptr_t) _dl_find_hash("malloc",