source: trunk/libs/newlib/src/newlib/libc/misc/init.c @ 567

Last change on this file since 567 was 444, checked in by satin@…, 6 years ago

add newlib,libalmos-mkh, restructure shared_syscalls.h and mini-libc

File size: 1.2 KB
Line 
1/*
2 * Copyright (C) 2004 CodeSourcery, LLC
3 *
4 * Permission to use, copy, modify, and distribute this file
5 * for any purpose is hereby granted without fee, provided that
6 * the above copyright notice and this notice appears in all
7 * copies.
8 *
9 * This file is distributed WITHOUT ANY WARRANTY; without even the implied
10 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11 */
12
13/* Handle ELF .{pre_init,init,fini}_array sections.  */
14#include <sys/types.h>
15
16#ifdef HAVE_INITFINI_ARRAY
17
18/* These magic symbols are provided by the linker.  */
19extern void (*__preinit_array_start []) (void) __attribute__((weak));
20extern void (*__preinit_array_end []) (void) __attribute__((weak));
21extern void (*__init_array_start []) (void) __attribute__((weak));
22extern void (*__init_array_end []) (void) __attribute__((weak));
23
24extern void _init (void);
25
26/* Iterate over all the init routines.  */
27void
28__libc_init_array (void)
29{
30  size_t count;
31  size_t i;
32
33  count = __preinit_array_end - __preinit_array_start;
34  for (i = 0; i < count; i++)
35    __preinit_array_start[i] ();
36
37  _init ();
38
39  count = __init_array_end - __init_array_start;
40  for (i = 0; i < count; i++)
41    __init_array_start[i] ();
42}
43#endif
Note: See TracBrowser for help on using the repository browser.