blob: 99662fe1692ff0e551537907a784d49f7649cbf4 [file] [log] [blame]
Bruce Beare39640842011-06-20 10:29:50 -07001/*
2 * Copyright (C) 2008 The Android Open Source Project
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in
12 * the documentation and/or other materials provided with the
13 * distribution.
14 *
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
18 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
19 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
20 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
22 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
25 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 * SUCH DAMAGE.
27 */
28
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080029.section .init_array, "aw"
30.align 4
31.type __INIT_ARRAY__, @object
32.globl __INIT_ARRAY__
33__INIT_ARRAY__:
34 .long -1
Mark D Horndc3bc872011-04-26 14:05:30 -070035 .long frame_dummy
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080036
37.section .fini_array, "aw"
38.align 4
39.type __FINI_ARRAY__, @object
40.globl __FINI_ARRAY__
41__FINI_ARRAY__:
42 .long -1
Mark D Horndc3bc872011-04-26 14:05:30 -070043 .long __do_global_dtors_aux
44
45 .section .eh_frame,"a",@progbits
46 .align 4
47 .type __EH_FRAME_BEGIN__, @object
48__EH_FRAME_BEGIN__:
49 .text
50 .p2align 4,,15
51 .type __do_global_dtors_aux, @function
52__do_global_dtors_aux:
53 pushl %ebp
54 movl %esp, %ebp
55 pushl %ebx
56 call __x86.get_pc_thunk.bx
57 addl $_GLOBAL_OFFSET_TABLE_, %ebx
58 subl $20, %esp
59 cmpb $0, completed.4454@GOTOFF(%ebx)
60 jne .L5
61 movl __dso_handle@GOTOFF(%ebx), %eax
62 movl %eax, (%esp)
63 call __cxa_finalize@PLT
64 movl __deregister_frame_info_bases@GOT(%ebx), %eax
65 testl %eax, %eax
66 je .L4
67 leal __EH_FRAME_BEGIN__@GOTOFF(%ebx), %eax
68 movl %eax, (%esp)
69 call __deregister_frame_info_bases@PLT
70.L4:
71 movb $1, completed.4454@GOTOFF(%ebx)
72.L5:
73 addl $20, %esp
74 popl %ebx
75 popl %ebp
76 ret
77 .text
78 .p2align 4,,15
79 .type frame_dummy, @function
80frame_dummy:
81 pushl %ebp
82 movl %esp, %ebp
83 pushl %ebx
84 call __x86.get_pc_thunk.bx
85 addl $_GLOBAL_OFFSET_TABLE_, %ebx
86 subl $20, %esp
87 movl __register_frame_info_bases@GOT(%ebx), %eax
88 testl %eax, %eax
89 je .L8
90 leal object.4469@GOTOFF(%ebx), %eax
91 movl %eax, 4(%esp)
92 leal __EH_FRAME_BEGIN__@GOTOFF(%ebx), %eax
93 movl %ebx, 12(%esp)
94 movl $0, 8(%esp)
95 movl %eax, (%esp)
96 call __register_frame_info_bases@PLT
97.L8:
98 addl $20, %esp
99 popl %ebx
100 popl %ebp
101 ret
102 .local completed.4454
103 .comm completed.4454,1,1
104 .local object.4469
105 .comm object.4469,24,4
106 .weak __register_frame_info_bases
107 .weak __deregister_frame_info_bases
108
Bruce Beare39640842011-06-20 10:29:50 -0700109#include "__dso_handle_so.S"
110#include "atexit.S"
Bruce Bearee0b48442011-05-03 21:04:40 -0700111#include "__stack_chk_fail_local.S"