diff options
author | Elliott Hughes <enh@google.com> | 2017-07-24 16:53:11 -0700 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2017-07-25 11:54:33 -0700 |
commit | b348d5cda89d0f4a8306056dde1c0423887854d6 (patch) | |
tree | 2a9c140dc3166ebc22527373169734a9fa841582 /libc/arch-common | |
parent | 4fce647a5bcb61680c9f865b05c9f43a4841b244 (diff) | |
download | android_bionic-b348d5cda89d0f4a8306056dde1c0423887854d6.tar.gz android_bionic-b348d5cda89d0f4a8306056dde1c0423887854d6.tar.bz2 android_bionic-b348d5cda89d0f4a8306056dde1c0423887854d6.zip |
Build crtbegin with clang too.
If _start_main is static, clang optimizes it out and then generates an
undefined reference from the inline assembler, so let's explicitly tell
the compiler it's used.
Bug: N/A
Test: ran tests
Change-Id: Iba3d9c63abae9a0dc32f236b01783515f0190956
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__; |