diff options
Diffstat (limited to 'libc/arch-common')
-rw-r--r-- | libc/arch-common/bionic/crtbegin.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/libc/arch-common/bionic/crtbegin.c b/libc/arch-common/bionic/crtbegin.c index d3a0f07c6..45c9ea707 100644 --- a/libc/arch-common/bionic/crtbegin.c +++ b/libc/arch-common/bionic/crtbegin.c @@ -30,16 +30,13 @@ #include <stddef.h> #include <stdint.h> -__attribute__((__section__(".preinit_array"))) -void (*__PREINIT_ARRAY__)(void) = (void (*)(void)) -1; +#define SECTION(name) __attribute__((__section__(name))) +SECTION(".preinit_array") void (*__PREINIT_ARRAY__)(void) = (void (*)(void)) -1; +SECTION(".init_array") void (*__INIT_ARRAY__)(void) = (void (*)(void)) -1; +SECTION(".fini_array") void (*__FINI_ARRAY__)(void) = (void (*)(void)) -1; +#undef SECTION -__attribute__((__section__(".init_array"))) -void (*__INIT_ARRAY__)(void) = (void (*)(void)) -1; - -__attribute__((__section__(".fini_array"))) -void (*__FINI_ARRAY__)(void) = (void (*)(void)) -1; - -static void _start_main(void* raw_args) { +static void _start_main(void* raw_args) __used { structors_array_t array; array.preinit_array = &__PREINIT_ARRAY__; array.init_array = &__INIT_ARRAY__; |