Merge "libc: remove ctors/dtors sections"

This commit is contained in:
Nick Kralevich 2012-08-28 10:20:27 -07:00 committed by android code review
commit c410a9613a
6 changed files with 1 additions and 41 deletions

View file

@ -31,7 +31,6 @@ typedef struct
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 @@ void (*__INIT_ARRAY__)(void) = (void (*)(void)) -1;
__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 @@ void _start() {
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);

View file

@ -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

View file

@ -70,8 +70,6 @@ _start:
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 @@ __FINI_ARRAY__:
.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

View file

@ -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

View file

@ -35,9 +35,6 @@ typedef struct
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);

View file

@ -80,11 +80,6 @@ __noreturn void __libc_init(uintptr_t *elfdata,
/* 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);