aboutsummaryrefslogtreecommitdiffstats
path: root/libc/arch-arm/bionic/crtbegin.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/arch-arm/bionic/crtbegin.c')
-rw-r--r--libc/arch-arm/bionic/crtbegin.c30
1 files changed, 7 insertions, 23 deletions
diff --git a/libc/arch-arm/bionic/crtbegin.c b/libc/arch-arm/bionic/crtbegin.c
index 0e2d31ea9..cc587975d 100644
--- a/libc/arch-arm/bionic/crtbegin.c
+++ b/libc/arch-arm/bionic/crtbegin.c
@@ -26,21 +26,8 @@
* SUCH DAMAGE.
*/
-typedef struct
-{
- void (**preinit_array)(void);
- void (**init_array)(void);
- void (**fini_array)(void);
-} structors_array_t;
-
-extern int main(int argc, char **argv, char **env);
-
-extern void __libc_init(
- unsigned int *elfdata,
- void (*onexit)(void),
- int (*slingshot)(int, char**, char**),
- structors_array_t const * const structors
-);
+#include "../../bionic/libc_init_common.h"
+#include <stddef.h>
__attribute__ ((section (".preinit_array")))
void (*__PREINIT_ARRAY__)(void) = (void (*)(void)) -1;
@@ -51,17 +38,14 @@ void (*__INIT_ARRAY__)(void) = (void (*)(void)) -1;
__attribute__ ((section (".fini_array")))
void (*__FINI_ARRAY__)(void) = (void (*)(void)) -1;
-__attribute__((visibility("hidden")))
-void _start() {
+__LIBC_HIDDEN__ void _start() {
structors_array_t array;
- void *elfdata;
-
array.preinit_array = &__PREINIT_ARRAY__;
- array.init_array = &__INIT_ARRAY__;
- array.fini_array = &__FINI_ARRAY__;
+ array.init_array = &__INIT_ARRAY__;
+ array.fini_array = &__FINI_ARRAY__;
- elfdata = __builtin_frame_address(0) + sizeof(void *);
- __libc_init(elfdata, (void *) 0, &main, &array);
+ void* raw_args = __builtin_frame_address(0) + sizeof(void*);
+ __libc_init(raw_args, NULL, &main, &array);
}
#include "__dso_handle.h"