Permalink
Cannot retrieve contributors at this time
Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.
Sign up
Fetching contributors…

/* | |
* 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)); | |
#ifdef HAVE_INIT_FINI | |
extern void _init (void); | |
#endif | |
/* 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] (); | |
#ifdef HAVE_INIT_FINI | |
_init (); | |
#endif | |
count = __init_array_end - __init_array_start; | |
for (i = 0; i < count; i++) | |
__init_array_start[i] (); | |
} | |
#endif |