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);