1*b5da552cSAndrew Rist/************************************************************** 2*b5da552cSAndrew Rist * 3*b5da552cSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*b5da552cSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*b5da552cSAndrew Rist * distributed with this work for additional information 6*b5da552cSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*b5da552cSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*b5da552cSAndrew Rist * "License"); you may not use this file except in compliance 9*b5da552cSAndrew Rist * with the License. You may obtain a copy of the License at 10*b5da552cSAndrew Rist * 11*b5da552cSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*b5da552cSAndrew Rist * 13*b5da552cSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*b5da552cSAndrew Rist * software distributed under the License is distributed on an 15*b5da552cSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b5da552cSAndrew Rist * KIND, either express or implied. See the License for the 17*b5da552cSAndrew Rist * specific language governing permissions and limitations 18*b5da552cSAndrew Rist * under the License. 19*b5da552cSAndrew Rist * 20*b5da552cSAndrew Rist *************************************************************/ 21*b5da552cSAndrew Rist 22cdf0e10cSrcweir .text 23cdf0e10cSrcweir 24cdf0e10cSrcweir.globl privateSnippetExecutorGeneral 25cdf0e10cSrcweir .type privateSnippetExecutorGeneral,@function 26cdf0e10cSrcweirprivateSnippetExecutorGeneral: 27cdf0e10cSrcweir.LFBg: 28cdf0e10cSrcweir movl %esp,%ecx 29cdf0e10cSrcweir pushl %ebp # proper stack frame needed for exception handling 30cdf0e10cSrcweir.LCFIg0: 31cdf0e10cSrcweir movl %esp,%ebp 32cdf0e10cSrcweir.LCFIg1: 33cdf0e10cSrcweir subl $0x8,%esp # 32bit returnValue, and preserve potential 128bit 34cdf0e10cSrcweir # stack alignment 35cdf0e10cSrcweir pushl %esp # 32bit &returnValue 36cdf0e10cSrcweir pushl %ecx # 32bit pCallStack 37cdf0e10cSrcweir pushl %edx # 32bit nVtableOffset 38cdf0e10cSrcweir pushl %eax # 32bit nFunctionIndex 39cdf0e10cSrcweir call cpp_vtable_call 40cdf0e10cSrcweir movl 16(%esp),%eax # 32bit returnValue 41cdf0e10cSrcweir leave 42cdf0e10cSrcweir ret 43cdf0e10cSrcweir.LFEg: 44cdf0e10cSrcweir .size privateSnippetExecutorGeneral,.-privateSnippetExecutorGeneral 45cdf0e10cSrcweir 46cdf0e10cSrcweir.globl privateSnippetExecutorVoid 47cdf0e10cSrcweir .type privateSnippetExecutorVoid,@function 48cdf0e10cSrcweirprivateSnippetExecutorVoid: 49cdf0e10cSrcweir.LFBv: 50cdf0e10cSrcweir movl %esp,%ecx 51cdf0e10cSrcweir pushl %ebp # proper stack frame needed for exception handling 52cdf0e10cSrcweir.LCFIv0: 53cdf0e10cSrcweir movl %esp,%ebp 54cdf0e10cSrcweir.LCFIv1: 55cdf0e10cSrcweir andl $0xFFFFFFF0,%esp # preserve potential 128bit stack alignment 56cdf0e10cSrcweir pushl $0 # 32bit null pointer (returnValue not used) 57cdf0e10cSrcweir pushl %ecx # 32bit pCallStack 58cdf0e10cSrcweir pushl %edx # 32bit nVtableOffset 59cdf0e10cSrcweir pushl %eax # 32bit nFunctionIndex 60cdf0e10cSrcweir call cpp_vtable_call 61cdf0e10cSrcweir leave 62cdf0e10cSrcweir ret 63cdf0e10cSrcweir.LFEv: 64cdf0e10cSrcweir .size privateSnippetExecutorVoid,.-privateSnippetExecutorVoid 65cdf0e10cSrcweir 66cdf0e10cSrcweir.globl privateSnippetExecutorHyper 67cdf0e10cSrcweir .type privateSnippetExecutorHyper,@function 68cdf0e10cSrcweirprivateSnippetExecutorHyper: 69cdf0e10cSrcweir.LFBh: 70cdf0e10cSrcweir movl %esp,%ecx 71cdf0e10cSrcweir pushl %ebp # proper stack frame needed for exception handling 72cdf0e10cSrcweir.LCFIh0: 73cdf0e10cSrcweir movl %esp,%ebp 74cdf0e10cSrcweir.LCFIh1: 75cdf0e10cSrcweir subl $0x8,%esp # 64bit returnValue (preserves potential 128bit 76cdf0e10cSrcweir # stack alignment) 77cdf0e10cSrcweir pushl %esp # 32bit &returnValue 78cdf0e10cSrcweir pushl %ecx # 32bit pCallStack 79cdf0e10cSrcweir pushl %edx # 32bit nVtableOffset 80cdf0e10cSrcweir pushl %eax # 32bit nFunctionIndex 81cdf0e10cSrcweir call cpp_vtable_call 82cdf0e10cSrcweir movl 16(%esp),%eax # 64bit returnValue, lower half 83cdf0e10cSrcweir movl 20(%esp),%edx # 64bit returnValue, upper half 84cdf0e10cSrcweir leave 85cdf0e10cSrcweir ret 86cdf0e10cSrcweir.LFEh: 87cdf0e10cSrcweir .size privateSnippetExecutorHyper,.-privateSnippetExecutorHyper 88cdf0e10cSrcweir 89cdf0e10cSrcweir.globl privateSnippetExecutorFloat 90cdf0e10cSrcweir .type privateSnippetExecutorFloat,@function 91cdf0e10cSrcweirprivateSnippetExecutorFloat: 92cdf0e10cSrcweir.LFBf: 93cdf0e10cSrcweir movl %esp,%ecx 94cdf0e10cSrcweir pushl %ebp # proper stack frame needed for exception handling 95cdf0e10cSrcweir.LCFIf0: 96cdf0e10cSrcweir movl %esp,%ebp 97cdf0e10cSrcweir.LCFIf1: 98cdf0e10cSrcweir subl $0x8,%esp # 32bit returnValue, and preserve potential 128bit 99cdf0e10cSrcweir # stack alignment 100cdf0e10cSrcweir pushl %esp # 32bit &returnValue 101cdf0e10cSrcweir pushl %ecx # 32bit pCallStack 102cdf0e10cSrcweir pushl %edx # 32bit nVtableOffset 103cdf0e10cSrcweir pushl %eax # 32bit nFunctionIndex 104cdf0e10cSrcweir call cpp_vtable_call 105cdf0e10cSrcweir flds 16(%esp) # 32bit returnValue 106cdf0e10cSrcweir leave 107cdf0e10cSrcweir ret 108cdf0e10cSrcweir.LFEf: 109cdf0e10cSrcweir .size privateSnippetExecutorFloat,.-privateSnippetExecutorFloat 110cdf0e10cSrcweir 111cdf0e10cSrcweir.globl privateSnippetExecutorDouble 112cdf0e10cSrcweir .type privateSnippetExecutorDouble,@function 113cdf0e10cSrcweirprivateSnippetExecutorDouble: 114cdf0e10cSrcweir.LFBd: 115cdf0e10cSrcweir movl %esp,%ecx 116cdf0e10cSrcweir pushl %ebp # proper stack frame needed for exception handling 117cdf0e10cSrcweir.LCFId0: 118cdf0e10cSrcweir movl %esp,%ebp 119cdf0e10cSrcweir.LCFId1: 120cdf0e10cSrcweir subl $0x8,%esp # 64bit returnValue (preserves potential 128bit 121cdf0e10cSrcweir # stack alignment) 122cdf0e10cSrcweir pushl %esp # 32bit &returnValue 123cdf0e10cSrcweir pushl %ecx # 32bit pCallStack 124cdf0e10cSrcweir pushl %edx # 32bit nVtableOffset 125cdf0e10cSrcweir pushl %eax # 32bit nFunctionIndex 126cdf0e10cSrcweir call cpp_vtable_call 127cdf0e10cSrcweir fldl 16(%esp) # 64bit returnValue 128cdf0e10cSrcweir leave 129cdf0e10cSrcweir ret 130cdf0e10cSrcweir.LFEd: 131cdf0e10cSrcweir .size privateSnippetExecutorDouble,.-privateSnippetExecutorDouble 132cdf0e10cSrcweir 133cdf0e10cSrcweir.globl privateSnippetExecutorClass 134cdf0e10cSrcweir .type privateSnippetExecutorClass,@function 135cdf0e10cSrcweirprivateSnippetExecutorClass: 136cdf0e10cSrcweir.LFBc: 137cdf0e10cSrcweir movl %esp,%ecx 138cdf0e10cSrcweir pushl %ebp # proper stack frame needed for exception handling 139cdf0e10cSrcweir.LCFIc0: 140cdf0e10cSrcweir movl %esp,%ebp 141cdf0e10cSrcweir.LCFIc1: 142cdf0e10cSrcweir subl $0x8,%esp # 32bit returnValue, and preserve potential 128bit 143cdf0e10cSrcweir # stack alignment 144cdf0e10cSrcweir pushl %esp # 32bit &returnValue 145cdf0e10cSrcweir pushl %ecx # 32bit pCallStack 146cdf0e10cSrcweir pushl %edx # 32bit nVtableOffset 147cdf0e10cSrcweir pushl %eax # 32bit nFunctionIndex 148cdf0e10cSrcweir call cpp_vtable_call 149cdf0e10cSrcweir movl 16(%esp),%eax # 32bit returnValue 150cdf0e10cSrcweir leave 151cdf0e10cSrcweir ret $4 152cdf0e10cSrcweir.LFEc: 153cdf0e10cSrcweir .size privateSnippetExecutorClass,.-privateSnippetExecutorClass 154cdf0e10cSrcweir 155cdf0e10cSrcweir .section .eh_frame,"a",@progbits 156cdf0e10cSrcweir.Lframe1: 157cdf0e10cSrcweir .long .LECIE1-.LSCIE1 # length 158cdf0e10cSrcweir.LSCIE1: 159cdf0e10cSrcweir .long 0 # CIE_ID 160cdf0e10cSrcweir .byte 1 # version 161cdf0e10cSrcweir .string "zR" # augmentation 162cdf0e10cSrcweir .uleb128 1 # code_alignment_factor 163cdf0e10cSrcweir .sleb128 -4 # data_alignment_factor 164cdf0e10cSrcweir .byte 8 # return_address_register 165cdf0e10cSrcweir .uleb128 1 # augmentation size 1: 166cdf0e10cSrcweir .byte 0x1B # FDE Encoding (pcrel sdata4) 167cdf0e10cSrcweir # initial_instructions: 168cdf0e10cSrcweir .byte 0x0C # DW_CFA_def_cfa %esp, 4 169cdf0e10cSrcweir .uleb128 4 170cdf0e10cSrcweir .uleb128 4 171cdf0e10cSrcweir .byte 0x88 # DW_CFA_offset ret, 1 172cdf0e10cSrcweir .uleb128 1 173cdf0e10cSrcweir .align 4 174cdf0e10cSrcweir.LECIE1: 175cdf0e10cSrcweir.LSFDEg: 176cdf0e10cSrcweir .long .LEFDEg-.LASFDEg # length 177cdf0e10cSrcweir.LASFDEg: 178cdf0e10cSrcweir .long .LASFDEg-.Lframe1 # CIE_pointer 179cdf0e10cSrcweir .long .LFBg-. # initial_location 180cdf0e10cSrcweir .long .LFEg-.LFBg # address_range 181cdf0e10cSrcweir .uleb128 0 # augmentation size 0 182cdf0e10cSrcweir # instructions: 183cdf0e10cSrcweir .byte 0x04 # DW_CFA_advance_loc4 184cdf0e10cSrcweir .long .LCFIg0-.LFBg 185cdf0e10cSrcweir .byte 0x0E # DW_CFA_def_cfa_offset 8 186cdf0e10cSrcweir .uleb128 8 187cdf0e10cSrcweir .byte 0x85 # DW_CFA_offset %ebp, 2 188cdf0e10cSrcweir .uleb128 2 189cdf0e10cSrcweir .byte 0x04 # DW_CFA_advance_loc4 190cdf0e10cSrcweir .long .LCFIg1-.LCFIg0 191cdf0e10cSrcweir .byte 0x0D # DW_CFA_def_cfa_register %ebp 192cdf0e10cSrcweir .uleb128 5 193cdf0e10cSrcweir .align 4 194cdf0e10cSrcweir.LEFDEg: 195cdf0e10cSrcweir.LSFDEv: 196cdf0e10cSrcweir .long .LEFDEv-.LASFDEv # length 197cdf0e10cSrcweir.LASFDEv: 198cdf0e10cSrcweir .long .LASFDEv-.Lframe1 # CIE_pointer 199cdf0e10cSrcweir .long .LFBv-. # initial_location 200cdf0e10cSrcweir .long .LFEv-.LFBv # address_range 201cdf0e10cSrcweir .uleb128 0 # augmentation size 0 202cdf0e10cSrcweir # instructions: 203cdf0e10cSrcweir .byte 0x04 # DW_CFA_advance_loc4 204cdf0e10cSrcweir .long .LCFIv0-.LFBv 205cdf0e10cSrcweir .byte 0x0E # DW_CFA_def_cfa_offset 8 206cdf0e10cSrcweir .uleb128 8 207cdf0e10cSrcweir .byte 0x85 # DW_CFA_offset %ebp, 2 208cdf0e10cSrcweir .uleb128 2 209cdf0e10cSrcweir .byte 0x04 # DW_CFA_advance_loc4 210cdf0e10cSrcweir .long .LCFIv1-.LCFIv0 211cdf0e10cSrcweir .byte 0x0D # DW_CFA_def_cfa_register %ebp 212cdf0e10cSrcweir .uleb128 5 213cdf0e10cSrcweir .align 4 214cdf0e10cSrcweir.LEFDEv: 215cdf0e10cSrcweir.LSFDEh: 216cdf0e10cSrcweir .long .LEFDEh-.LASFDEh # length 217cdf0e10cSrcweir.LASFDEh: 218cdf0e10cSrcweir .long .LASFDEh-.Lframe1 # CIE_pointer 219cdf0e10cSrcweir .long .LFBh-. # initial_location 220cdf0e10cSrcweir .long .LFEh-.LFBh # address_range 221cdf0e10cSrcweir .uleb128 0 # augmentation size 0 222cdf0e10cSrcweir # instructions: 223cdf0e10cSrcweir .byte 0x04 # DW_CFA_advance_loc4 224cdf0e10cSrcweir .long .LCFIh0-.LFBh 225cdf0e10cSrcweir .byte 0x0E # DW_CFA_def_cfa_offset 8 226cdf0e10cSrcweir .uleb128 8 227cdf0e10cSrcweir .byte 0x85 # DW_CFA_offset %ebp, 2 228cdf0e10cSrcweir .uleb128 2 229cdf0e10cSrcweir .byte 0x04 # DW_CFA_advance_loc4 230cdf0e10cSrcweir .long .LCFIh1-.LCFIh0 231cdf0e10cSrcweir .byte 0x0D # DW_CFA_def_cfa_register %ebp 232cdf0e10cSrcweir .uleb128 5 233cdf0e10cSrcweir .align 4 234cdf0e10cSrcweir.LEFDEh: 235cdf0e10cSrcweir.LSFDEf: 236cdf0e10cSrcweir .long .LEFDEf-.LASFDEf # length 237cdf0e10cSrcweir.LASFDEf: 238cdf0e10cSrcweir .long .LASFDEf-.Lframe1 # CIE_pointer 239cdf0e10cSrcweir .long .LFBf-. # initial_location 240cdf0e10cSrcweir .long .LFEf-.LFBf # address_range 241cdf0e10cSrcweir .uleb128 0 # augmentation size 0 242cdf0e10cSrcweir # instructions: 243cdf0e10cSrcweir .byte 0x04 # DW_CFA_advance_loc4 244cdf0e10cSrcweir .long .LCFIf0-.LFBf 245cdf0e10cSrcweir .byte 0x0E # DW_CFA_def_cfa_offset 8 246cdf0e10cSrcweir .uleb128 8 247cdf0e10cSrcweir .byte 0x85 # DW_CFA_offset %ebp, 2 248cdf0e10cSrcweir .uleb128 2 249cdf0e10cSrcweir .byte 0x04 # DW_CFA_advance_loc4 250cdf0e10cSrcweir .long .LCFIf1-.LCFIf0 251cdf0e10cSrcweir .byte 0x0D # DW_CFA_def_cfa_register %ebp 252cdf0e10cSrcweir .uleb128 5 253cdf0e10cSrcweir .align 4 254cdf0e10cSrcweir.LEFDEf: 255cdf0e10cSrcweir.LSFDEd: 256cdf0e10cSrcweir .long .LEFDEd-.LASFDEd # length 257cdf0e10cSrcweir.LASFDEd: 258cdf0e10cSrcweir .long .LASFDEd-.Lframe1 # CIE_pointer 259cdf0e10cSrcweir .long .LFBd-. # initial_location 260cdf0e10cSrcweir .long .LFEd-.LFBd # address_range 261cdf0e10cSrcweir .uleb128 0 # augmentation size 0 262cdf0e10cSrcweir # instructions: 263cdf0e10cSrcweir .byte 0x04 # DW_CFA_advance_loc4 264cdf0e10cSrcweir .long .LCFId0-.LFBd 265cdf0e10cSrcweir .byte 0x0E # DW_CFA_def_cfa_offset 8 266cdf0e10cSrcweir .uleb128 8 267cdf0e10cSrcweir .byte 0x85 # DW_CFA_offset %ebp, 2 268cdf0e10cSrcweir .uleb128 2 269cdf0e10cSrcweir .byte 0x04 # DW_CFA_advance_loc4 270cdf0e10cSrcweir .long .LCFId1-.LCFId0 271cdf0e10cSrcweir .byte 0x0D # DW_CFA_def_cfa_register %ebp 272cdf0e10cSrcweir .uleb128 5 273cdf0e10cSrcweir .align 4 274cdf0e10cSrcweir.LEFDEd: 275cdf0e10cSrcweir.LSFDEc: 276cdf0e10cSrcweir .long .LEFDEc-.LASFDEc # length 277cdf0e10cSrcweir.LASFDEc: 278cdf0e10cSrcweir .long .LASFDEc-.Lframe1 # CIE_pointer 279cdf0e10cSrcweir .long .LFBc-. # initial_location 280cdf0e10cSrcweir .long .LFEc-.LFBc # address_range 281cdf0e10cSrcweir .uleb128 0 # augmentation size 0 282cdf0e10cSrcweir # instructions: 283cdf0e10cSrcweir .byte 0x04 # DW_CFA_advance_loc4 284cdf0e10cSrcweir .long .LCFIc0-.LFBc 285cdf0e10cSrcweir .byte 0x0E # DW_CFA_def_cfa_offset 8 286cdf0e10cSrcweir .uleb128 8 287cdf0e10cSrcweir .byte 0x85 # DW_CFA_offset %ebp, 2 288cdf0e10cSrcweir .uleb128 2 289cdf0e10cSrcweir .byte 0x04 # DW_CFA_advance_loc4 290cdf0e10cSrcweir .long .LCFIc1-.LCFIc0 291cdf0e10cSrcweir .byte 0x0D # DW_CFA_def_cfa_register %ebp 292cdf0e10cSrcweir .uleb128 5 293cdf0e10cSrcweir .align 4 294cdf0e10cSrcweir.LEFDEc: 295cdf0e10cSrcweir .section .note.GNU-stack,"",@progbits 296