.text .align 4 .type __bionic_call_ctors, @function /* * The CTORS_LIST is marked by -1 (start) and 0 (end). * We mark the end of the .ctors section with the __CTOR_END__ section so * that we can just iterate backwards from it until we hit -1 and execute * all the function pointers. This seems to be the way to do it for SVR4 * derived systems. */ __bionic_call_ctors: pushl %esi mov $__CTOR_END__, %esi 0: /* now grab the next function pointer and check if its -1. If not, * call it, otherwise we're done. We use %esi since it's callee saved. */ subl $4, %esi mov (%esi), %eax cmp $0xffffffff, %eax je 1f call *%eax jmp 0b 1: /* we're done */ popl %esi ret .section .init .align 4 call __bionic_call_ctors ret .section .ctors, "aw", @progbits .align 4 .type __CTOR_END__, @object __CTOR_END__: .long 0 .section .init_array, "aw" .long 0 .section .fini_array, "aw" .long 0