mirror of https://github.com/flysand7/ciabatta.git
33 lines
1.1 KiB
C
33 lines
1.1 KiB
C
|
|
#include <cia-def.h>
|
|
|
|
// NOTE: These symbols are provided by the linker
|
|
#define attribute_hidden __attribute__((__visibility__("hidden")))
|
|
extern void (*__preinit_array_start []) (int, char **, char **) attribute_hidden;
|
|
extern void (*__preinit_array_end []) (int, char **, char **) attribute_hidden;
|
|
extern void (*__init_array_start []) (int, char **, char **) attribute_hidden;
|
|
extern void (*__init_array_end []) (int, char **, char **) attribute_hidden;
|
|
extern void (*__fini_array_start []) (void) attribute_hidden;
|
|
extern void (*__fini_array_end []) (void) attribute_hidden;
|
|
|
|
// extern void _init();
|
|
// extern void _fini();
|
|
|
|
// These will be called by __libc_start_main
|
|
void __libc_global_init(int argc, char **argv, char **envp) {
|
|
// _init();
|
|
u64 size = (u64)__init_array_end - (u64)__init_array_start;
|
|
for(u64 i = 0; i != size; ++i) {
|
|
(*__init_array_start[i])(argc, argv, envp);
|
|
}
|
|
}
|
|
|
|
void __libc_global_fini(int argc, char **argv, char **envp) {
|
|
u64 size = (u64)__fini_array_end - (u64)__fini_array_start;
|
|
u64 i = size;
|
|
while(i-- > 0) {
|
|
(*__fini_array_start[i])();
|
|
}
|
|
// _fini();
|
|
}
|