libc: remove ctors/dtors sections

None of the supported ARCHs actually populate these sections,
so there is no point in keeping them in the binaries.

Change-Id: I21a364f510118ac1114e1b49c53ec8c895c6bc6b
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@gmail.com>
diff --git a/libc/arch-arm/bionic/crtbegin.c b/libc/arch-arm/bionic/crtbegin.c
index 9dcd254..0e2d31e 100644
--- a/libc/arch-arm/bionic/crtbegin.c
+++ b/libc/arch-arm/bionic/crtbegin.c
@@ -31,7 +31,6 @@
     void (**preinit_array)(void);
     void (**init_array)(void);
     void (**fini_array)(void);
-    void (**ctors_array)(void);
 } structors_array_t;
 
 extern int main(int argc, char **argv, char **env);
@@ -52,10 +51,7 @@
 __attribute__ ((section (".fini_array")))
 void (*__FINI_ARRAY__)(void) = (void (*)(void)) -1;
 
-__attribute__ ((section (".ctors")))
-void (*__CTOR_LIST__)(void) = (void (*)(void)) -1;
-
-__attribute__((visbility("hidden")))
+__attribute__((visibility("hidden")))
 void _start() {
   structors_array_t array;
   void *elfdata;
@@ -63,7 +59,6 @@
   array.preinit_array = &__PREINIT_ARRAY__;
   array.init_array =    &__INIT_ARRAY__;
   array.fini_array =    &__FINI_ARRAY__;
-  array.ctors_array =   &__CTOR_LIST__;
 
   elfdata = __builtin_frame_address(0) + sizeof(void *);
   __libc_init(elfdata, (void *) 0, &main, &array);
diff --git a/libc/arch-arm/bionic/crtend.S b/libc/arch-arm/bionic/crtend.S
index 7196fc1..fffb0ab 100644
--- a/libc/arch-arm/bionic/crtend.S
+++ b/libc/arch-arm/bionic/crtend.S
@@ -35,9 +35,6 @@
 	.section .fini_array, "aw"
 	.long 0
 
-	.section .ctors, "aw"
-	.long 0
-
 #if defined(__linux__) && defined(__ELF__)
 	.section .note.GNU-stack,"",%progbits
 #endif
diff --git a/libc/arch-mips/bionic/crtbegin.S b/libc/arch-mips/bionic/crtbegin.S
index d85d52c..40b689e 100644
--- a/libc/arch-mips/bionic/crtbegin.S
+++ b/libc/arch-mips/bionic/crtbegin.S
@@ -70,8 +70,6 @@
 1:	.long	__PREINIT_ARRAY__
 	.long	__INIT_ARRAY__
 	.long	__FINI_ARRAY__
-	.long	__CTOR_LIST__
-	.long	__DTOR_LIST__
 
 	.section .preinit_array, "aw"
 	.type __PREINIT_ARRAY__, @object
@@ -92,18 +90,6 @@
 	.long -1
 	.long __do_global_dtors_aux
 
-	.section .ctors, "aw"
-	.type __CTOR_LIST__, @object
-	.globl __CTOR_LIST__
-__CTOR_LIST__:
-	.long -1
-
-	.section .dtors, "aw"
-	.type __DTOR_LIST__, @object
-	.globl __DTOR_LIST__
-__DTOR_LIST__:
-	.long -1
-
 	.abicalls
 	.text
 	.align	2
diff --git a/libc/arch-mips/bionic/crtend.S b/libc/arch-mips/bionic/crtend.S
index 7a319be..6984d0e 100644
--- a/libc/arch-mips/bionic/crtend.S
+++ b/libc/arch-mips/bionic/crtend.S
@@ -35,13 +35,3 @@
 	.section .fini_array, "aw"
 	.long 0
 
-	.section .ctors, "aw"
-	.type __CTOR_END__, @object
-__CTOR_END__:
-	.long 0
-
-	.section .dtors, "aw"
-	.type __DTOR_END__, @object
-__DTOR_END__:
-	.long 0
-
diff --git a/libc/bionic/libc_init_common.h b/libc/bionic/libc_init_common.h
index 35050a1..c55594b 100644
--- a/libc/bionic/libc_init_common.h
+++ b/libc/bionic/libc_init_common.h
@@ -35,9 +35,6 @@
     void (**preinit_array)(void);
     void (**init_array)(void);
     void (**fini_array)(void);
-#ifndef __i386__
-    void (**ctors_array)(void);
-#endif
 } structors_array_t;
 
 extern void __libc_init_common(uintptr_t *elfdata);
diff --git a/libc/bionic/libc_init_static.c b/libc/bionic/libc_init_static.c
index f97961d..97156e8 100644
--- a/libc/bionic/libc_init_static.c
+++ b/libc/bionic/libc_init_static.c
@@ -80,11 +80,6 @@
     /* pre-init array. */
     call_array(structors->preinit_array);
 
-#ifndef __i386__
-    /* .ctors section initializers, for non-arm-eabi ABIs */
-    call_array(structors->ctors_array);
-#endif
-
     // call static constructors
     call_array(structors->init_array);