am 56baceca
: Merge "Update X86 Bionic CRT files for unwind/exceptions"
* commit '56baceca024f1cc2a5e8ef8c5e7ba7ea463d1ae2': Update X86 Bionic CRT files for unwind/exceptions
This commit is contained in:
commit
a57270b6ab
6 changed files with 195 additions and 9 deletions
|
@ -76,10 +76,59 @@ __PREINIT_ARRAY__:
|
|||
.globl __INIT_ARRAY__
|
||||
__INIT_ARRAY__:
|
||||
.long -1
|
||||
.long frame_dummy
|
||||
|
||||
.section .fini_array, "aw"
|
||||
.globl __FINI_ARRAY__
|
||||
__FINI_ARRAY__:
|
||||
.long -1
|
||||
.long __do_global_dtors_aux
|
||||
|
||||
.section .eh_frame,"a",@progbits
|
||||
.align 4
|
||||
.type __EH_FRAME_BEGIN__, @object
|
||||
__EH_FRAME_BEGIN__:
|
||||
.text
|
||||
.p2align 4,,15
|
||||
.type __do_global_dtors_aux, @function
|
||||
__do_global_dtors_aux:
|
||||
pushl %ebp
|
||||
movl %esp, %ebp
|
||||
subl $24, %esp
|
||||
cmpb $0, completed.4454
|
||||
jne .L4
|
||||
movl $__deregister_frame_info_bases, %eax
|
||||
testl %eax, %eax
|
||||
je .L3
|
||||
movl $__EH_FRAME_BEGIN__, (%esp)
|
||||
call __deregister_frame_info_bases
|
||||
.L3:
|
||||
movb $1, completed.4454
|
||||
.L4:
|
||||
leave
|
||||
ret
|
||||
.text
|
||||
.p2align 4,,15
|
||||
.type frame_dummy, @function
|
||||
frame_dummy:
|
||||
pushl %ebp
|
||||
movl $__register_frame_info_bases, %eax
|
||||
movl %esp, %ebp
|
||||
subl $24, %esp
|
||||
testl %eax, %eax
|
||||
je .L7
|
||||
movl %ebx, 12(%esp)
|
||||
movl $0, 8(%esp)
|
||||
movl $object.4466, 4(%esp)
|
||||
movl $__EH_FRAME_BEGIN__, (%esp)
|
||||
call __register_frame_info_bases
|
||||
.L7:
|
||||
leave
|
||||
ret
|
||||
.local completed.4454
|
||||
.comm completed.4454,1,1
|
||||
.local object.4466
|
||||
.comm object.4466,24,4
|
||||
.weak __register_frame_info_bases
|
||||
.weak __deregister_frame_info_bases
|
||||
#include "__dso_handle.S"
|
||||
|
|
|
@ -1,16 +1,10 @@
|
|||
# This function is to be called when the shared library
|
||||
# is unloaded through dlclose()
|
||||
_on_dlclose:
|
||||
lea __dso_handle, %eax
|
||||
call __cxa_finalize
|
||||
ret
|
||||
|
||||
.section .init_array, "aw"
|
||||
.align 4
|
||||
.type __INIT_ARRAY__, @object
|
||||
.globl __INIT_ARRAY__
|
||||
__INIT_ARRAY__:
|
||||
.long -1
|
||||
.long frame_dummy
|
||||
|
||||
.section .fini_array, "aw"
|
||||
.align 4
|
||||
|
@ -18,6 +12,86 @@ __INIT_ARRAY__:
|
|||
.globl __FINI_ARRAY__
|
||||
__FINI_ARRAY__:
|
||||
.long -1
|
||||
.long _on_dlclose
|
||||
.long __do_global_dtors_aux
|
||||
|
||||
.section .eh_frame,"a",@progbits
|
||||
.align 4
|
||||
.type __EH_FRAME_BEGIN__, @object
|
||||
__EH_FRAME_BEGIN__:
|
||||
.text
|
||||
.p2align 4,,15
|
||||
.type __do_global_dtors_aux, @function
|
||||
__do_global_dtors_aux:
|
||||
pushl %ebp
|
||||
movl %esp, %ebp
|
||||
pushl %ebx
|
||||
call __x86.get_pc_thunk.bx
|
||||
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
||||
subl $20, %esp
|
||||
cmpb $0, completed.4454@GOTOFF(%ebx)
|
||||
jne .L5
|
||||
movl __dso_handle@GOTOFF(%ebx), %eax
|
||||
movl %eax, (%esp)
|
||||
call __cxa_finalize@PLT
|
||||
movl __deregister_frame_info_bases@GOT(%ebx), %eax
|
||||
testl %eax, %eax
|
||||
je .L4
|
||||
leal __EH_FRAME_BEGIN__@GOTOFF(%ebx), %eax
|
||||
movl %eax, (%esp)
|
||||
call __deregister_frame_info_bases@PLT
|
||||
.L4:
|
||||
movb $1, completed.4454@GOTOFF(%ebx)
|
||||
.L5:
|
||||
addl $20, %esp
|
||||
popl %ebx
|
||||
popl %ebp
|
||||
ret
|
||||
.text
|
||||
.p2align 4,,15
|
||||
.type frame_dummy, @function
|
||||
frame_dummy:
|
||||
pushl %ebp
|
||||
movl %esp, %ebp
|
||||
pushl %ebx
|
||||
call __x86.get_pc_thunk.bx
|
||||
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
||||
subl $20, %esp
|
||||
movl __register_frame_info_bases@GOT(%ebx), %eax
|
||||
testl %eax, %eax
|
||||
je .L8
|
||||
leal object.4469@GOTOFF(%ebx), %eax
|
||||
movl %eax, 4(%esp)
|
||||
leal __EH_FRAME_BEGIN__@GOTOFF(%ebx), %eax
|
||||
movl %ebx, 12(%esp)
|
||||
movl $0, 8(%esp)
|
||||
movl %eax, (%esp)
|
||||
call __register_frame_info_bases@PLT
|
||||
.L8:
|
||||
addl $20, %esp
|
||||
popl %ebx
|
||||
popl %ebp
|
||||
ret
|
||||
.local completed.4454
|
||||
.comm completed.4454,1,1
|
||||
.local object.4469
|
||||
.comm object.4469,24,4
|
||||
.weak __register_frame_info_bases
|
||||
.weak __deregister_frame_info_bases
|
||||
|
||||
.section .text.__x86.get_pc_thunk.bx,"axG",@progbits,__x86.get_pc_thunk.bx,comdat
|
||||
.globl __x86.get_pc_thunk.bx
|
||||
.hidden __x86.get_pc_thunk.bx
|
||||
.type __x86.get_pc_thunk.bx, @function
|
||||
__x86.get_pc_thunk.bx:
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
movl (%esp), %ebx
|
||||
ret
|
||||
|
||||
#include "__dso_handle.S"
|
||||
|
|
|
@ -75,10 +75,59 @@ __PREINIT_ARRAY__:
|
|||
.globl __INIT_ARRAY__
|
||||
__INIT_ARRAY__:
|
||||
.long -1
|
||||
.long frame_dummy
|
||||
|
||||
.section .fini_array, "aw"
|
||||
.globl __FINI_ARRAY__
|
||||
__FINI_ARRAY__:
|
||||
.long -1
|
||||
.long __do_global_dtors_aux
|
||||
|
||||
.section .eh_frame,"a",@progbits
|
||||
.align 4
|
||||
.type __EH_FRAME_BEGIN__, @object
|
||||
__EH_FRAME_BEGIN__:
|
||||
.text
|
||||
.p2align 4,,15
|
||||
.type __do_global_dtors_aux, @function
|
||||
__do_global_dtors_aux:
|
||||
pushl %ebp
|
||||
movl %esp, %ebp
|
||||
subl $24, %esp
|
||||
cmpb $0, completed.4454
|
||||
jne .L4
|
||||
movl $__deregister_frame_info_bases, %eax
|
||||
testl %eax, %eax
|
||||
je .L3
|
||||
movl $__EH_FRAME_BEGIN__, (%esp)
|
||||
call __deregister_frame_info_bases
|
||||
.L3:
|
||||
movb $1, completed.4454
|
||||
.L4:
|
||||
leave
|
||||
ret
|
||||
.text
|
||||
.p2align 4,,15
|
||||
.type frame_dummy, @function
|
||||
frame_dummy:
|
||||
pushl %ebp
|
||||
movl $__register_frame_info_bases, %eax
|
||||
movl %esp, %ebp
|
||||
subl $24, %esp
|
||||
testl %eax, %eax
|
||||
je .L7
|
||||
movl %ebx, 12(%esp)
|
||||
movl $0, 8(%esp)
|
||||
movl $object.4466, 4(%esp)
|
||||
movl $__EH_FRAME_BEGIN__, (%esp)
|
||||
call __register_frame_info_bases
|
||||
.L7:
|
||||
leave
|
||||
ret
|
||||
.local completed.4454
|
||||
.comm completed.4454,1,1
|
||||
.local object.4466
|
||||
.comm object.4466,24,4
|
||||
.weak __register_frame_info_bases
|
||||
.weak __deregister_frame_info_bases
|
||||
#include "__dso_handle.S"
|
||||
|
|
|
@ -6,3 +6,10 @@
|
|||
|
||||
.section .fini_array, "aw"
|
||||
.long 0
|
||||
|
||||
.section .eh_frame,"a",@progbits
|
||||
.align 4
|
||||
.type __FRAME_END__, @object
|
||||
.size __FRAME_END__, 4
|
||||
__FRAME_END__:
|
||||
.zero 4
|
||||
|
|
|
@ -1,6 +1,12 @@
|
|||
|
||||
.section .init_array, "aw"
|
||||
.long 0
|
||||
|
||||
.section .fini_array, "aw"
|
||||
.long 0
|
||||
|
||||
.section .eh_frame,"a",@progbits
|
||||
.align 4
|
||||
.type __FRAME_END__, @object
|
||||
.size __FRAME_END__, 4
|
||||
__FRAME_END__:
|
||||
.zero 4
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#
|
||||
.section .bss
|
||||
.align 4
|
||||
.hidden __dso_handle
|
||||
.globl __dso_handle
|
||||
__dso_handle:
|
||||
.long 0
|
||||
|
|
Loading…
Reference in a new issue