sysv.S revision a89495f48f185779ff7d9d64ce6e6b037c9ded87
1a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project/* ----------------------------------------------------------------------- 2a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project sysv.S - Copyright (c) 1996, 1998, 2001-2003, 2005, 2008 Red Hat, Inc. 3a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 4a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project X86 Foreign Function Interface 5a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 6a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project Permission is hereby granted, free of charge, to any person obtaining 7a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project a copy of this software and associated documentation files (the 8a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ``Software''), to deal in the Software without restriction, including 9a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project without limitation the rights to use, copy, modify, merge, publish, 10a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project distribute, sublicense, and/or sell copies of the Software, and to 11a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project permit persons to whom the Software is furnished to do so, subject to 12a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project the following conditions: 13a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 14a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project The above copyright notice and this permission notice shall be included 15a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project in all copies or substantial portions of the Software. 16a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 17a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, 18a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 20a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 21a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 22a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 24a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project DEALINGS IN THE SOFTWARE. 25a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ----------------------------------------------------------------------- */ 26a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 27a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#ifndef __x86_64__ 28a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 29a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#define LIBFFI_ASM 30a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#include <fficonfig.h> 31a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#include <ffi.h> 32a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 33a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.text 34a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 35a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.globl ffi_prep_args 36a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 37a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .align 4 38a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.globl ffi_call_SYSV 39a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .type ffi_call_SYSV,@function 40a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 41a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Projectffi_call_SYSV: 42a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LFB1: 43a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project pushl %ebp 44a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LCFI0: 45a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl %esp,%ebp 46a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LCFI1: 47a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project subl $8,%esp /* Android: copy from darwin.S */ 48a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project /* Make room for all of the new args. */ 49a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl 16(%ebp),%ecx 50a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project subl %ecx,%esp 51a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 52a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl %esp,%eax 53a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 54a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project /* Place all of the ffi_prep_args in position */ 55a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project subl $8,%esp /* Android: copy from darwin.S */ 56a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project pushl 12(%ebp) 57a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project pushl %eax 58a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project call *8(%ebp) 59a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 60a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project /* Return stack to previous state and call the function */ 61a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project addl $16,%esp /* Android: copy from darwin.S */ 62a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 63a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project call *28(%ebp) 64a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 65a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project /* Load %ecx with the return type code */ 66a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl 20(%ebp),%ecx 67a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 68a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project /* Protect %esi. We're going to pop it in the epilogue. */ 69a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project pushl %esi 70a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 71a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project /* If the return value pointer is NULL, assume no return value. */ 72a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project cmpl $0,24(%ebp) 73a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jne 0f 74a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 75a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project /* Even if there is no space for the return value, we are 76a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project obliged to handle floating-point values. */ 77a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project cmpl $FFI_TYPE_FLOAT,%ecx 78a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jne noretval 79a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project fstp %st(0) 80a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 81a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jmp epilogue 82a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 83a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project0: 84a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project call 1f 85a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 86a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.Lstore_table: 87a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long noretval-.Lstore_table /* FFI_TYPE_VOID */ 88a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long retint-.Lstore_table /* FFI_TYPE_INT */ 89a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long retfloat-.Lstore_table /* FFI_TYPE_FLOAT */ 90a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long retdouble-.Lstore_table /* FFI_TYPE_DOUBLE */ 91a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long retlongdouble-.Lstore_table /* FFI_TYPE_LONGDOUBLE */ 92a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long retuint8-.Lstore_table /* FFI_TYPE_UINT8 */ 93a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long retsint8-.Lstore_table /* FFI_TYPE_SINT8 */ 94a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long retuint16-.Lstore_table /* FFI_TYPE_UINT16 */ 95a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long retsint16-.Lstore_table /* FFI_TYPE_SINT16 */ 96a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long retint-.Lstore_table /* FFI_TYPE_UINT32 */ 97a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long retint-.Lstore_table /* FFI_TYPE_SINT32 */ 98a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long retint64-.Lstore_table /* FFI_TYPE_UINT64 */ 99a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long retint64-.Lstore_table /* FFI_TYPE_SINT64 */ 100a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long retstruct-.Lstore_table /* FFI_TYPE_STRUCT */ 101a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long retint-.Lstore_table /* FFI_TYPE_POINTER */ 102a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 103a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project1: 104a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project pop %esi 105a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project add (%esi, %ecx, 4), %esi 106a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jmp *%esi 107a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 108a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project /* Sign/zero extend as appropriate. */ 109a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Projectretsint8: 110a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movsbl %al, %eax 111a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jmp retint 112a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 113a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Projectretsint16: 114a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movswl %ax, %eax 115a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jmp retint 116a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 117a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Projectretuint8: 118a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movzbl %al, %eax 119a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jmp retint 120a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 121a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Projectretuint16: 122a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movzwl %ax, %eax 123a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jmp retint 124a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 125a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Projectretfloat: 126a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project /* Load %ecx with the pointer to storage for the return value */ 127a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl 24(%ebp),%ecx 128a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project fstps (%ecx) 129a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jmp epilogue 130a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 131a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Projectretdouble: 132a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project /* Load %ecx with the pointer to storage for the return value */ 133a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl 24(%ebp),%ecx 134a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project fstpl (%ecx) 135a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jmp epilogue 136a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 137a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Projectretlongdouble: 138a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project /* Load %ecx with the pointer to storage for the return value */ 139a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl 24(%ebp),%ecx 140a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project fstpt (%ecx) 141a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jmp epilogue 142a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 143a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Projectretint64: 144a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project /* Load %ecx with the pointer to storage for the return value */ 145a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl 24(%ebp),%ecx 146a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl %eax,0(%ecx) 147a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl %edx,4(%ecx) 148a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jmp epilogue 149a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 150a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Projectretint: 151a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project /* Load %ecx with the pointer to storage for the return value */ 152a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl 24(%ebp),%ecx 153a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl %eax,0(%ecx) 154a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 155a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Projectretstruct: 156a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project /* Nothing to do! */ 157a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 158a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Projectnoretval: 159a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Projectepilogue: 160a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project popl %esi 161a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl %ebp,%esp 162a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project popl %ebp 163a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ret 164a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LFE1: 165a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.ffi_call_SYSV_end: 166a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .size ffi_call_SYSV,.ffi_call_SYSV_end-ffi_call_SYSV 167a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 168a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .align 4 169a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source ProjectFFI_HIDDEN (ffi_closure_SYSV) 170a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.globl ffi_closure_SYSV 171a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .type ffi_closure_SYSV, @function 172a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 173a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Projectffi_closure_SYSV: 174a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LFB2: 175a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project pushl %ebp 176a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LCFI2: 177a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl %esp, %ebp 178a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LCFI3: 179a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project subl $40, %esp 180a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project leal -24(%ebp), %edx 181a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl %edx, -12(%ebp) /* resp */ 182a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project leal 8(%ebp), %edx 183a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl %edx, 4(%esp) /* args = __builtin_dwarf_cfa () */ 184a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project leal -12(%ebp), %edx 185a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl %edx, (%esp) /* &resp */ 186a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#if defined HAVE_HIDDEN_VISIBILITY_ATTRIBUTE || !defined __PIC__ 187a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project call ffi_closure_SYSV_inner 188a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#else 189a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl %ebx, 8(%esp) 190a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LCFI7: 191a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project call 1f 192a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project1: popl %ebx 193a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx 194a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project call ffi_closure_SYSV_inner@PLT 195a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl 8(%esp), %ebx 196a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#endif 197a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl -12(%ebp), %ecx 198a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project cmpl $FFI_TYPE_INT, %eax 199a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project je .Lcls_retint 200a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 201a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project /* Handle FFI_TYPE_UINT8, FFI_TYPE_SINT8, FFI_TYPE_UINT16, 202a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project FFI_TYPE_SINT16, FFI_TYPE_UINT32, FFI_TYPE_SINT32. */ 203a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project cmpl $FFI_TYPE_UINT64, %eax 204a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jge 0f 205a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project cmpl $FFI_TYPE_UINT8, %eax 206a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jge .Lcls_retint 207a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 208a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project0: cmpl $FFI_TYPE_FLOAT, %eax 209a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project je .Lcls_retfloat 210a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project cmpl $FFI_TYPE_DOUBLE, %eax 211a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project je .Lcls_retdouble 212a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project cmpl $FFI_TYPE_LONGDOUBLE, %eax 213a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project je .Lcls_retldouble 214a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project cmpl $FFI_TYPE_SINT64, %eax 215a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project je .Lcls_retllong 216a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project cmpl $FFI_TYPE_STRUCT, %eax 217a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project je .Lcls_retstruct 218a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.Lcls_epilogue: 219a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl %ebp, %esp 220a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project popl %ebp 221a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ret 222a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.Lcls_retint: 223a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl (%ecx), %eax 224a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jmp .Lcls_epilogue 225a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.Lcls_retfloat: 226a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project flds (%ecx) 227a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jmp .Lcls_epilogue 228a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.Lcls_retdouble: 229a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project fldl (%ecx) 230a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jmp .Lcls_epilogue 231a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.Lcls_retldouble: 232a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project fldt (%ecx) 233a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jmp .Lcls_epilogue 234a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.Lcls_retllong: 235a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl (%ecx), %eax 236a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl 4(%ecx), %edx 237a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jmp .Lcls_epilogue 238a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.Lcls_retstruct: 239a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl %ebp, %esp 240a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project popl %ebp 241a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ret $4 242a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LFE2: 243a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .size ffi_closure_SYSV, .-ffi_closure_SYSV 244a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 245a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#if !FFI_NO_RAW_API 246a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 247a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#define RAW_CLOSURE_CIF_OFFSET ((FFI_TRAMPOLINE_SIZE + 3) & ~3) 248a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#define RAW_CLOSURE_FUN_OFFSET (RAW_CLOSURE_CIF_OFFSET + 4) 249a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#define RAW_CLOSURE_USER_DATA_OFFSET (RAW_CLOSURE_FUN_OFFSET + 4) 250a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#define CIF_FLAGS_OFFSET 20 251a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 252a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .align 4 253a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source ProjectFFI_HIDDEN (ffi_closure_raw_SYSV) 254a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.globl ffi_closure_raw_SYSV 255a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .type ffi_closure_raw_SYSV, @function 256a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 257a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Projectffi_closure_raw_SYSV: 258a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LFB3: 259a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project pushl %ebp 260a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LCFI4: 261a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl %esp, %ebp 262a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LCFI5: 263a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project pushl %esi 264a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LCFI6: 265a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project subl $36, %esp 266a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl RAW_CLOSURE_CIF_OFFSET(%eax), %esi /* closure->cif */ 267a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl RAW_CLOSURE_USER_DATA_OFFSET(%eax), %edx /* closure->user_data */ 268a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl %edx, 12(%esp) /* user_data */ 269a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project leal 8(%ebp), %edx /* __builtin_dwarf_cfa () */ 270a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl %edx, 8(%esp) /* raw_args */ 271a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project leal -24(%ebp), %edx 272a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl %edx, 4(%esp) /* &res */ 273a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl %esi, (%esp) /* cif */ 274a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project call *RAW_CLOSURE_FUN_OFFSET(%eax) /* closure->fun */ 275a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl CIF_FLAGS_OFFSET(%esi), %eax /* rtype */ 276a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project cmpl $FFI_TYPE_INT, %eax 277a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project je .Lrcls_retint 278a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 279a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project /* Handle FFI_TYPE_UINT8, FFI_TYPE_SINT8, FFI_TYPE_UINT16, 280a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project FFI_TYPE_SINT16, FFI_TYPE_UINT32, FFI_TYPE_SINT32. */ 281a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project cmpl $FFI_TYPE_UINT64, %eax 282a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jge 0f 283a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project cmpl $FFI_TYPE_UINT8, %eax 284a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jge .Lrcls_retint 285a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project0: 286a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project cmpl $FFI_TYPE_FLOAT, %eax 287a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project je .Lrcls_retfloat 288a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project cmpl $FFI_TYPE_DOUBLE, %eax 289a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project je .Lrcls_retdouble 290a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project cmpl $FFI_TYPE_LONGDOUBLE, %eax 291a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project je .Lrcls_retldouble 292a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project cmpl $FFI_TYPE_SINT64, %eax 293a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project je .Lrcls_retllong 294a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.Lrcls_epilogue: 295a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project addl $36, %esp 296a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project popl %esi 297a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project popl %ebp 298a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project ret 299a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.Lrcls_retint: 300a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl -24(%ebp), %eax 301a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jmp .Lrcls_epilogue 302a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.Lrcls_retfloat: 303a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project flds -24(%ebp) 304a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jmp .Lrcls_epilogue 305a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.Lrcls_retdouble: 306a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project fldl -24(%ebp) 307a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jmp .Lrcls_epilogue 308a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.Lrcls_retldouble: 309a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project fldt -24(%ebp) 310a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jmp .Lrcls_epilogue 311a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.Lrcls_retllong: 312a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl -24(%ebp), %eax 313a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project movl -20(%ebp), %edx 314a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project jmp .Lrcls_epilogue 315a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LFE3: 316a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .size ffi_closure_raw_SYSV, .-ffi_closure_raw_SYSV 317a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#endif 318a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 319a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .section .eh_frame,EH_FRAME_FLAGS,@progbits 320a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.Lframe1: 321a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long .LECIE1-.LSCIE1 /* Length of Common Information Entry */ 322a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LSCIE1: 323a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long 0x0 /* CIE Identifier Tag */ 324a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x1 /* CIE Version */ 325a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#ifdef __PIC__ 326a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .ascii "zR\0" /* CIE Augmentation */ 327a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#else 328a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .ascii "\0" /* CIE Augmentation */ 329a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#endif 330a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x1 /* .uleb128 0x1; CIE Code Alignment Factor */ 331a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x7c /* .sleb128 -4; CIE Data Alignment Factor */ 332a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x8 /* CIE RA Column */ 333a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#ifdef __PIC__ 334a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x1 /* .uleb128 0x1; Augmentation size */ 335a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x1b /* FDE Encoding (pcrel sdata4) */ 336a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#endif 337a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0xc /* DW_CFA_def_cfa */ 338a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x4 /* .uleb128 0x4 */ 339a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x4 /* .uleb128 0x4 */ 340a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x88 /* DW_CFA_offset, column 0x8 */ 341a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x1 /* .uleb128 0x1 */ 342a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .align 4 343a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LECIE1: 344a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LSFDE1: 345a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long .LEFDE1-.LASFDE1 /* FDE Length */ 346a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LASFDE1: 347a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long .LASFDE1-.Lframe1 /* FDE CIE offset */ 348a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#ifdef __PIC__ 349a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long .LFB1-. /* FDE initial location */ 350a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#else 351a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long .LFB1 /* FDE initial location */ 352a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#endif 353a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long .LFE1-.LFB1 /* FDE address range */ 354a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#ifdef __PIC__ 355a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x0 /* .uleb128 0x0; Augmentation size */ 356a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#endif 357a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x4 /* DW_CFA_advance_loc4 */ 358a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long .LCFI0-.LFB1 359a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0xe /* DW_CFA_def_cfa_offset */ 360a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x8 /* .uleb128 0x8 */ 361a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x85 /* DW_CFA_offset, column 0x5 */ 362a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x2 /* .uleb128 0x2 */ 363a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x4 /* DW_CFA_advance_loc4 */ 364a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long .LCFI1-.LCFI0 365a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0xd /* DW_CFA_def_cfa_register */ 366a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x5 /* .uleb128 0x5 */ 367a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .align 4 368a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LEFDE1: 369a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LSFDE2: 370a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long .LEFDE2-.LASFDE2 /* FDE Length */ 371a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LASFDE2: 372a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long .LASFDE2-.Lframe1 /* FDE CIE offset */ 373a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#ifdef __PIC__ 374a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long .LFB2-. /* FDE initial location */ 375a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#else 376a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long .LFB2 377a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#endif 378a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long .LFE2-.LFB2 /* FDE address range */ 379a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#ifdef __PIC__ 380a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x0 /* .uleb128 0x0; Augmentation size */ 381a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#endif 382a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x4 /* DW_CFA_advance_loc4 */ 383a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long .LCFI2-.LFB2 384a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0xe /* DW_CFA_def_cfa_offset */ 385a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x8 /* .uleb128 0x8 */ 386a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x85 /* DW_CFA_offset, column 0x5 */ 387a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x2 /* .uleb128 0x2 */ 388a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x4 /* DW_CFA_advance_loc4 */ 389a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long .LCFI3-.LCFI2 390a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0xd /* DW_CFA_def_cfa_register */ 391a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x5 /* .uleb128 0x5 */ 392a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#if !defined HAVE_HIDDEN_VISIBILITY_ATTRIBUTE && defined __PIC__ 393a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x4 /* DW_CFA_advance_loc4 */ 394a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long .LCFI7-.LCFI3 395a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x83 /* DW_CFA_offset, column 0x3 */ 396a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0xa /* .uleb128 0xa */ 397a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#endif 398a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .align 4 399a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LEFDE2: 400a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 401a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#if !FFI_NO_RAW_API 402a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 403a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LSFDE3: 404a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long .LEFDE3-.LASFDE3 /* FDE Length */ 405a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LASFDE3: 406a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long .LASFDE3-.Lframe1 /* FDE CIE offset */ 407a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#ifdef __PIC__ 408a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long .LFB3-. /* FDE initial location */ 409a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#else 410a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long .LFB3 411a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#endif 412a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long .LFE3-.LFB3 /* FDE address range */ 413a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#ifdef __PIC__ 414a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x0 /* .uleb128 0x0; Augmentation size */ 415a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#endif 416a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x4 /* DW_CFA_advance_loc4 */ 417a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long .LCFI4-.LFB3 418a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0xe /* DW_CFA_def_cfa_offset */ 419a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x8 /* .uleb128 0x8 */ 420a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x85 /* DW_CFA_offset, column 0x5 */ 421a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x2 /* .uleb128 0x2 */ 422a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x4 /* DW_CFA_advance_loc4 */ 423a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long .LCFI5-.LCFI4 424a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0xd /* DW_CFA_def_cfa_register */ 425a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x5 /* .uleb128 0x5 */ 426a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x4 /* DW_CFA_advance_loc4 */ 427a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .long .LCFI6-.LCFI5 428a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x86 /* DW_CFA_offset, column 0x6 */ 429a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .byte 0x3 /* .uleb128 0x3 */ 430a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .align 4 431a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project.LEFDE3: 432a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 433a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#endif 434a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 435a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#endif /* ifndef __x86_64__ */ 436a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project 437a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#if defined __ELF__ && defined __linux__ 438a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project .section .note.GNU-stack,"",@progbits 439a89495f48f185779ff7d9d64ce6e6b037c9ded87The Android Open Source Project#endif 440