1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00

Add sysdeps/init_array to produce empty crt[in].o and use .preinit_array for gcrt1.o

This commit is contained in:
Roland McGrath
2013-03-12 12:47:36 -07:00
parent e6b5a29364
commit 9967e003b3
7 changed files with 131 additions and 0 deletions

View File

@ -49,10 +49,13 @@ extern void (*__fini_array_start []) (void) attribute_hidden;
extern void (*__fini_array_end []) (void) attribute_hidden;
#ifndef NO_INITFINI
/* These function symbols are provided for the .init/.fini section entry
points automagically by the linker. */
extern void _init (void);
extern void _fini (void);
#endif
/* These functions are passed to __libc_start_main by the startup code.
These get statically linked into each program. For dynamically linked
@ -76,7 +79,9 @@ __libc_csu_init (int argc, char **argv, char **envp)
}
#endif
#ifndef NO_INITFINI
_init ();
#endif
const size_t size = __init_array_end - __init_array_start;
for (size_t i = 0; i < size; i++)
@ -94,6 +99,8 @@ __libc_csu_fini (void)
while (i-- > 0)
(*__fini_array_start [i]) ();
# ifndef NO_INITFINI
_fini ();
# endif
#endif
}