diff options
Diffstat (limited to 'newlib/libc/misc/init.c')
-rw-r--r-- | newlib/libc/misc/init.c | 60 |
1 files changed, 0 insertions, 60 deletions
diff --git a/newlib/libc/misc/init.c b/newlib/libc/misc/init.c deleted file mode 100644 index 50bac50c7..000000000 --- a/newlib/libc/misc/init.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (C) 2004 CodeSourcery, LLC - * - * Permission to use, copy, modify, and distribute this file - * for any purpose is hereby granted without fee, provided that - * the above copyright notice and this notice appears in all - * copies. - * - * This file is distributed WITHOUT ANY WARRANTY; without even the implied - * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - */ - -/* Handle ELF .{pre_init,init,fini}_array sections. */ -#include <sys/types.h> - -#ifdef HAVE_INITFINI_ARRAY - -/* These magic symbols are provided by the linker. */ -extern void (*__preinit_array_start []) (void) __attribute__((weak)); -extern void (*__preinit_array_end []) (void) __attribute__((weak)); -extern void (*__init_array_start []) (void) __attribute__((weak)); -extern void (*__init_array_end []) (void) __attribute__((weak)); -extern void (*__fini_array_start []) (void) __attribute__((weak)); -extern void (*__fini_array_end []) (void) __attribute__((weak)); - -extern void _init (void); -extern void _fini (void); - -/* Iterate over all the init routines. */ -void -__libc_init_array (void) -{ - size_t count; - size_t i; - - count = __preinit_array_end - __preinit_array_start; - for (i = 0; i < count; i++) - __preinit_array_start[i] (); - - _init (); - - count = __init_array_end - __init_array_start; - for (i = 0; i < count; i++) - __init_array_start[i] (); -} - -/* Run all the cleanup routines. */ -void -__libc_fini_array (void) -{ - size_t count; - size_t i; - - count = __fini_array_end - __fini_array_start; - for (i = count; i > 0; i--) - __fini_array_start[i-1] (); - - _fini (); -} -#endif |