From cf6e75bd080e50f674954e7dbfd4d4e0c33416ec Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Thu, 22 May 2008 15:09:08 +0100 Subject: stubdom: support constructors and destructors Signed-off-by: Samuel Thibault --- extras/mini-os/main.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'extras/mini-os/main.c') diff --git a/extras/mini-os/main.c b/extras/mini-os/main.c index 6e67b01138..1851469c3e 100644 --- a/extras/mini-os/main.c +++ b/extras/mini-os/main.c @@ -19,6 +19,8 @@ extern int main(int argc, char *argv[], char *envp[]); extern void __libc_init_array(void); extern void __libc_fini_array(void); +extern unsigned long __CTOR_LIST__[]; +extern unsigned long __DTOR_LIST__[]; struct thread *main_thread; @@ -147,6 +149,8 @@ static void call_main(void *p) __libc_init_array(); environ = envp; + for (i = 1; i <= __CTOR_LIST__[0]; i++) + ((void((*)(void)))__CTOR_LIST__[i]) (); tzset(); exit(main(argc, argv, envp)); @@ -154,6 +158,10 @@ static void call_main(void *p) void _exit(int ret) { + int i; + + for (i = 1; i <= __DTOR_LIST__[0]; i++) + ((void((*)(void)))__DTOR_LIST__[i]) (); close_all_files(); __libc_fini_array(); printk("main returned %d\n", ret); -- cgit v1.2.3