bridges/Library_gcc3_linux_arm.mk | 4 bridges/source/cpp_uno/gcc3_ios_arm/helper.S | 343 ---------------------- bridges/source/cpp_uno/gcc3_ios_arm/helper.s | 343 ++++++++++++++++++++++ bridges/source/cpp_uno/gcc3_linux_arm/armhelper.S | 52 --- bridges/source/cpp_uno/gcc3_linux_arm/armhelper.s | 52 +++ 5 files changed, 399 insertions(+), 395 deletions(-)
New commits: commit 4c56be0e063ab65577aebf4bcd3eea657705caf8 Author: David Tardon <dtar...@redhat.com> Date: Sun Sep 23 08:41:54 2012 +0200 gb_AsmObject expects .s extension Change-Id: I958ad58081821ff31c02df0a1a5efb8406d7a6ee diff --git a/bridges/source/cpp_uno/gcc3_ios_arm/helper.S b/bridges/source/cpp_uno/gcc3_ios_arm/helper.S deleted file mode 100644 index 9c5ada3..0000000 --- a/bridges/source/cpp_uno/gcc3_ios_arm/helper.S +++ /dev/null @@ -1,343 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#include "codesnippets.S" - -#ifdef __arm -@ ARM support code for LibreOffice C++/UNO bridging -@ -@ Written by Peter Naulls <pe...@chocky.org> -@ Modified by Caolan McNamara <caol...@redhat.com> -@ Fixed by Michael Casadevall <mcasadev...@kubuntu.org> -@ Modified for iOS by Tor Lillqvist <t...@iki.fi> - - .file "helper.S" - .text - .align 4 - -_privateSnippetExecutor: - stmfd sp!, {r0-r3} @ follow other parameters on stack - mov r0, ip @ r0 points to functionoffset/vtable - mov r1, sp @ r1 points to this and params - @ (see cpp2uno.cxx:codeSnippet()) - stmfd sp!, {r4,lr} @ save return address - @ (r4 pushed to preserve stack alignment) - bl _cpp_vtable_call - - add sp, sp, #4 @ no need to restore r4 (we didn't touch it) - ldr pc, [sp], #20 @ return, discarding function arguments - -#else - .text - -.align 1, 0x90 -_privateSnippetExecutorGeneral: -LFBg: - movl %esp,%ecx - pushl %ebp # proper stack frame needed for exception handling -LCFIg0: - movl %esp,%ebp -LCFIg1: - subl $0x8,%esp # padding + 32bit returnValue - pushl %esp # 32bit &returnValue - pushl %ecx # 32bit pCallStack - pushl %edx # 32bit nVtableOffset - pushl %eax # 32bit nFunctionIndex - call L_cpp_vtable_call$stub - movl 16(%esp),%eax # 32bit returnValue - leave - ret -LFEg: - .long .-_privateSnippetExecutorGeneral - -.align 1, 0x90 -_privateSnippetExecutorVoid: -LFBv: - movl %esp,%ecx - pushl %ebp # proper stack frame needed for exception handling -LCFIv0: - movl %esp,%ebp -LCFIv1: - sub $8,%esp # padding - pushl $0 # 32bit null pointer (returnValue not used) - pushl %ecx # 32bit pCallStack - pushl %edx # 32bit nVtableOffset - pushl %eax # 32bit nFunctionIndex - call L_cpp_vtable_call$stub - leave - ret -LFEv: - .long .-_privateSnippetExecutorVoid - -.align 1, 0x90 -_privateSnippetExecutorHyper: -LFBh: - movl %esp,%ecx - pushl %ebp # proper stack frame needed for exception handling -LCFIh0: - movl %esp,%ebp -LCFIh1: - subl $0x8,%esp # 64bit returnValue - pushl %esp # 32bit &returnValue - pushl %ecx # 32bit pCallStack - pushl %edx # 32bit nVtableOffset - pushl %eax # 32bit nFunctionIndex - call L_cpp_vtable_call$stub - movl 16(%esp),%eax # 64bit returnValue, lower half - movl 20(%esp),%edx # 64bit returnValue, upper half - leave - ret -LFEh: - .long .-_privateSnippetExecutorHyper - -.align 1, 0x90 -_privateSnippetExecutorFloat: -LFBf: - movl %esp,%ecx - pushl %ebp # proper stack frame needed for exception handling -LCFIf0: - movl %esp,%ebp -LCFIf1: - subl $0x8,%esp # padding + 32bit returnValue - pushl %esp # 32bit &returnValue - pushl %ecx # 32bit pCallStack - pushl %edx # 32bit nVtableOffset - pushl %eax # 32bit nFunctionIndex - call L_cpp_vtable_call$stub - flds 16(%esp) # 32bit returnValue - leave - ret -LFEf: - .long .-_privateSnippetExecutorFloat - -.align 1, 0x90 -_privateSnippetExecutorDouble: -LFBd: - movl %esp,%ecx - pushl %ebp # proper stack frame needed for exception handling -LCFId0: - movl %esp,%ebp -LCFId1: - subl $0x8,%esp # 64bit returnValue - pushl %esp # 32bit &returnValue - pushl %ecx # 32bit pCallStack - pushl %edx # 32bit nVtableOffset - pushl %eax # 32bit nFunctionIndex - call L_cpp_vtable_call$stub - fldl 16(%esp) # 64bit returnValue - leave - ret -LFEd: - .long .-_privateSnippetExecutorDouble - -.align 1, 0x90 -_privateSnippetExecutorClass: -LFBc: - movl %esp,%ecx - pushl %ebp # proper stack frame needed for exception handling -LCFIc0: - movl %esp,%ebp -LCFIc1: - subl $0x8,%esp # padding + 32bit returnValue - pushl %esp # 32bit &returnValue - pushl %ecx # 32bit pCallStack - pushl %edx # 32bit nVtableOffset - pushl %eax # 32bit nFunctionIndex - call L_cpp_vtable_call$stub - movl 16(%esp),%eax # 32bit returnValue - leave - ret $4 -LFEc: - .long .-_privateSnippetExecutorClass - - .section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support -EH_frame1: - .set L$set$frame1,LECIE1-LSCIE1 - .long L$set$frame1 # length -LSCIE1: - .long 0 # CIE_ID - .byte 1 # version - .ascii "zPR\0" # augmentation - .byte 1 # code_alignment_factor (.uleb128 1) - .byte 0x7c # data_alignment_factor (.sleb128 -4) - .byte 8 # return_address_register - .byte 0x6 # augmentation size 7: - .byte 0x9b # ??? - .long L___gxx_personality_v0$non_lazy_ptr-. - .byte 0x10 - # initial_instructions: - .byte 0x0C # DW_CFA_def_cfa %esp, 4 - .byte 5 - .byte 4 - .byte 0x88 # DW_CFA_offset ret, 1 - .byte 1 - .align 2 -LECIE1: -_privateSnippetExecutorGeneral.eh: -LSFDEg: - .set L$set$g1,LEFDEg-LASFDEg - .long L$set$g1 # length -LASFDEg: - .long LASFDEg-EH_frame1 # CIE_pointer - .long LFBg-. # initial_location - .long LFEg-LFBg # address_range - .byte 0 # augmentation size 0 - # instructions: - .byte 0x04 # DW_CFA_advance_loc4 - .long LCFIg0-LFBg - .byte 0x0E # DW_CFA_def_cfa_offset 8 - .byte 8 - .byte 0x84 # DW_CFA_offset %ebp, 2 - .byte 2 - .byte 0x04 # DW_CFA_advance_loc4 - .long LCFIg1-LCFIg0 - .byte 0x0D # DW_CFA_def_cfa_register %ebp - .byte 4 - .align 2 -LEFDEg: -_privateSnippetExecutorVoid.eh: -LSFDEv: - .set L$set$v1,LEFDEv-LASFDEv - .long L$set$v1 # length -LASFDEv: - .long LASFDEv-EH_frame1 # CIE_pointer - .long LFBv-. # initial_location - .long LFEv-LFBv # address_range - .byte 0 # augmentation size 0 - # instructions: - .byte 0x04 # DW_CFA_advance_loc4 - .long LCFIv0-LFBv - .byte 0x0E # DW_CFA_def_cfa_offset 8 - .byte 8 - .byte 0x84 # DW_CFA_offset %ebp, 2 - .byte 2 - .byte 0x04 # DW_CFA_advance_loc4 - .long LCFIv1-LCFIv0 - .byte 0x0D # DW_CFA_def_cfa_register %ebp - .byte 4 - .align 2 -LEFDEv: -_privateSnippetExecutorHyper.eh: -LSFDEh: - .set L$set$h1,LEFDEh-LASFDEh - .long L$set$h1 # length -LASFDEh: - .long LASFDEh-EH_frame1 # CIE_pointer - .long LFBh-. # initial_location - .long LFEh-LFBh # address_range - .byte 0 # augmentation size 0 - # instructions: - .byte 0x04 # DW_CFA_advance_loc4 - .long LCFIh0-LFBh - .byte 0x0E # DW_CFA_def_cfa_offset 8 - .byte 8 - .byte 0x84 # DW_CFA_offset %ebp, 2 - .byte 2 - .byte 0x04 # DW_CFA_advance_loc4 - .long LCFIh1-LCFIh0 - .byte 0x0D # DW_CFA_def_cfa_register %ebp - .byte 4 - .align 2 -LEFDEh: -_privateSnippetExecutorFloat.eh: -LSFDEf: - .set L$set$f1,LEFDEf-LASFDEf - .long L$set$f1 # length -LASFDEf: - .long LASFDEf-EH_frame1 # CIE_pointer - .long LFBf-. # initial_location - .long LFEf-LFBf # address_range - .byte 0 # augmentation size 0 - # instructions: - .byte 0x04 # DW_CFA_advance_loc4 - .long LCFIf0-LFBf - .byte 0x0E # DW_CFA_def_cfa_offset 8 - .byte 8 - .byte 0x84 # DW_CFA_offset %ebp, 2 - .byte 2 - .byte 0x04 # DW_CFA_advance_loc4 - .long LCFIf1-LCFIf0 - .byte 0x0D # DW_CFA_def_cfa_register %ebp - .byte 4 - .align 2 -LEFDEf: -_privateSnippetExecutorDouble.eh: -LSFDEd: - .set L$set$d1,LEFDEd-LASFDEd - .long L$set$d1 # length -LASFDEd: - .long LASFDEd-EH_frame1 # CIE_pointer - .long LFBd-. # initial_location - .long LFEd-LFBd # address_range - .byte 0 # augmentation size 0 - # instructions: - .byte 0x04 # DW_CFA_advance_loc4 - .long LCFId0-LFBd - .byte 0x0E # DW_CFA_def_cfa_offset 8 - .byte 8 - .byte 0x84 # DW_CFA_offset %ebp, 2 - .byte 2 - .byte 0x04 # DW_CFA_advance_loc4 - .long LCFId1-LCFId0 - .byte 0x0D # DW_CFA_def_cfa_register %ebp - .byte 4 - .align 2 -LEFDEd: -_privateSnippetExecutorClass.eh: -LSFDEc: - .set L$set$c1,LEFDEc-LASFDEc - .long L$set$c1 # length -LASFDEc: - .long LASFDEc-EH_frame1 # CIE_pointer - .long LFBc-. # initial_location - .long LFEc-LFBc # address_range - .byte 0 # augmentation size 0 - # instructions: - .byte 0x04 # DW_CFA_advance_loc4 - .long LCFIc0-LFBc - .byte 0x0E # DW_CFA_def_cfa_offset 8 - .byte 8 - .byte 0x84 # DW_CFA_offset %ebp, 2 - .byte 2 - .byte 0x04 # DW_CFA_advance_loc4 - .long LCFIc1-LCFIc0 - .byte 0x0D # DW_CFA_def_cfa_register %ebp - .byte 4 - .align 2 -LEFDEc: - .section __IMPORT,__jump_table,symbol_stubs,self_modifying_code+pure_instructions,5 -L_cpp_vtable_call$stub: - .indirect_symbol _cpp_vtable_call - hlt ; hlt ; hlt ; hlt ; hlt - .section __IMPORT,__pointers,non_lazy_symbol_pointers -L___gxx_personality_v0$non_lazy_ptr: - .indirect_symbol ___gxx_personality_v0 - .long 0 - .constructor - .destructor - .align 1 -#endif diff --git a/bridges/source/cpp_uno/gcc3_ios_arm/helper.s b/bridges/source/cpp_uno/gcc3_ios_arm/helper.s new file mode 100644 index 0000000..9c5ada3 --- /dev/null +++ b/bridges/source/cpp_uno/gcc3_ios_arm/helper.s @@ -0,0 +1,343 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#include "codesnippets.S" + +#ifdef __arm +@ ARM support code for LibreOffice C++/UNO bridging +@ +@ Written by Peter Naulls <pe...@chocky.org> +@ Modified by Caolan McNamara <caol...@redhat.com> +@ Fixed by Michael Casadevall <mcasadev...@kubuntu.org> +@ Modified for iOS by Tor Lillqvist <t...@iki.fi> + + .file "helper.S" + .text + .align 4 + +_privateSnippetExecutor: + stmfd sp!, {r0-r3} @ follow other parameters on stack + mov r0, ip @ r0 points to functionoffset/vtable + mov r1, sp @ r1 points to this and params + @ (see cpp2uno.cxx:codeSnippet()) + stmfd sp!, {r4,lr} @ save return address + @ (r4 pushed to preserve stack alignment) + bl _cpp_vtable_call + + add sp, sp, #4 @ no need to restore r4 (we didn't touch it) + ldr pc, [sp], #20 @ return, discarding function arguments + +#else + .text + +.align 1, 0x90 +_privateSnippetExecutorGeneral: +LFBg: + movl %esp,%ecx + pushl %ebp # proper stack frame needed for exception handling +LCFIg0: + movl %esp,%ebp +LCFIg1: + subl $0x8,%esp # padding + 32bit returnValue + pushl %esp # 32bit &returnValue + pushl %ecx # 32bit pCallStack + pushl %edx # 32bit nVtableOffset + pushl %eax # 32bit nFunctionIndex + call L_cpp_vtable_call$stub + movl 16(%esp),%eax # 32bit returnValue + leave + ret +LFEg: + .long .-_privateSnippetExecutorGeneral + +.align 1, 0x90 +_privateSnippetExecutorVoid: +LFBv: + movl %esp,%ecx + pushl %ebp # proper stack frame needed for exception handling +LCFIv0: + movl %esp,%ebp +LCFIv1: + sub $8,%esp # padding + pushl $0 # 32bit null pointer (returnValue not used) + pushl %ecx # 32bit pCallStack + pushl %edx # 32bit nVtableOffset + pushl %eax # 32bit nFunctionIndex + call L_cpp_vtable_call$stub + leave + ret +LFEv: + .long .-_privateSnippetExecutorVoid + +.align 1, 0x90 +_privateSnippetExecutorHyper: +LFBh: + movl %esp,%ecx + pushl %ebp # proper stack frame needed for exception handling +LCFIh0: + movl %esp,%ebp +LCFIh1: + subl $0x8,%esp # 64bit returnValue + pushl %esp # 32bit &returnValue + pushl %ecx # 32bit pCallStack + pushl %edx # 32bit nVtableOffset + pushl %eax # 32bit nFunctionIndex + call L_cpp_vtable_call$stub + movl 16(%esp),%eax # 64bit returnValue, lower half + movl 20(%esp),%edx # 64bit returnValue, upper half + leave + ret +LFEh: + .long .-_privateSnippetExecutorHyper + +.align 1, 0x90 +_privateSnippetExecutorFloat: +LFBf: + movl %esp,%ecx + pushl %ebp # proper stack frame needed for exception handling +LCFIf0: + movl %esp,%ebp +LCFIf1: + subl $0x8,%esp # padding + 32bit returnValue + pushl %esp # 32bit &returnValue + pushl %ecx # 32bit pCallStack + pushl %edx # 32bit nVtableOffset + pushl %eax # 32bit nFunctionIndex + call L_cpp_vtable_call$stub + flds 16(%esp) # 32bit returnValue + leave + ret +LFEf: + .long .-_privateSnippetExecutorFloat + +.align 1, 0x90 +_privateSnippetExecutorDouble: +LFBd: + movl %esp,%ecx + pushl %ebp # proper stack frame needed for exception handling +LCFId0: + movl %esp,%ebp +LCFId1: + subl $0x8,%esp # 64bit returnValue + pushl %esp # 32bit &returnValue + pushl %ecx # 32bit pCallStack + pushl %edx # 32bit nVtableOffset + pushl %eax # 32bit nFunctionIndex + call L_cpp_vtable_call$stub + fldl 16(%esp) # 64bit returnValue + leave + ret +LFEd: + .long .-_privateSnippetExecutorDouble + +.align 1, 0x90 +_privateSnippetExecutorClass: +LFBc: + movl %esp,%ecx + pushl %ebp # proper stack frame needed for exception handling +LCFIc0: + movl %esp,%ebp +LCFIc1: + subl $0x8,%esp # padding + 32bit returnValue + pushl %esp # 32bit &returnValue + pushl %ecx # 32bit pCallStack + pushl %edx # 32bit nVtableOffset + pushl %eax # 32bit nFunctionIndex + call L_cpp_vtable_call$stub + movl 16(%esp),%eax # 32bit returnValue + leave + ret $4 +LFEc: + .long .-_privateSnippetExecutorClass + + .section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support +EH_frame1: + .set L$set$frame1,LECIE1-LSCIE1 + .long L$set$frame1 # length +LSCIE1: + .long 0 # CIE_ID + .byte 1 # version + .ascii "zPR\0" # augmentation + .byte 1 # code_alignment_factor (.uleb128 1) + .byte 0x7c # data_alignment_factor (.sleb128 -4) + .byte 8 # return_address_register + .byte 0x6 # augmentation size 7: + .byte 0x9b # ??? + .long L___gxx_personality_v0$non_lazy_ptr-. + .byte 0x10 + # initial_instructions: + .byte 0x0C # DW_CFA_def_cfa %esp, 4 + .byte 5 + .byte 4 + .byte 0x88 # DW_CFA_offset ret, 1 + .byte 1 + .align 2 +LECIE1: +_privateSnippetExecutorGeneral.eh: +LSFDEg: + .set L$set$g1,LEFDEg-LASFDEg + .long L$set$g1 # length +LASFDEg: + .long LASFDEg-EH_frame1 # CIE_pointer + .long LFBg-. # initial_location + .long LFEg-LFBg # address_range + .byte 0 # augmentation size 0 + # instructions: + .byte 0x04 # DW_CFA_advance_loc4 + .long LCFIg0-LFBg + .byte 0x0E # DW_CFA_def_cfa_offset 8 + .byte 8 + .byte 0x84 # DW_CFA_offset %ebp, 2 + .byte 2 + .byte 0x04 # DW_CFA_advance_loc4 + .long LCFIg1-LCFIg0 + .byte 0x0D # DW_CFA_def_cfa_register %ebp + .byte 4 + .align 2 +LEFDEg: +_privateSnippetExecutorVoid.eh: +LSFDEv: + .set L$set$v1,LEFDEv-LASFDEv + .long L$set$v1 # length +LASFDEv: + .long LASFDEv-EH_frame1 # CIE_pointer + .long LFBv-. # initial_location + .long LFEv-LFBv # address_range + .byte 0 # augmentation size 0 + # instructions: + .byte 0x04 # DW_CFA_advance_loc4 + .long LCFIv0-LFBv + .byte 0x0E # DW_CFA_def_cfa_offset 8 + .byte 8 + .byte 0x84 # DW_CFA_offset %ebp, 2 + .byte 2 + .byte 0x04 # DW_CFA_advance_loc4 + .long LCFIv1-LCFIv0 + .byte 0x0D # DW_CFA_def_cfa_register %ebp + .byte 4 + .align 2 +LEFDEv: +_privateSnippetExecutorHyper.eh: +LSFDEh: + .set L$set$h1,LEFDEh-LASFDEh + .long L$set$h1 # length +LASFDEh: + .long LASFDEh-EH_frame1 # CIE_pointer + .long LFBh-. # initial_location + .long LFEh-LFBh # address_range + .byte 0 # augmentation size 0 + # instructions: + .byte 0x04 # DW_CFA_advance_loc4 + .long LCFIh0-LFBh + .byte 0x0E # DW_CFA_def_cfa_offset 8 + .byte 8 + .byte 0x84 # DW_CFA_offset %ebp, 2 + .byte 2 + .byte 0x04 # DW_CFA_advance_loc4 + .long LCFIh1-LCFIh0 + .byte 0x0D # DW_CFA_def_cfa_register %ebp + .byte 4 + .align 2 +LEFDEh: +_privateSnippetExecutorFloat.eh: +LSFDEf: + .set L$set$f1,LEFDEf-LASFDEf + .long L$set$f1 # length +LASFDEf: + .long LASFDEf-EH_frame1 # CIE_pointer + .long LFBf-. # initial_location + .long LFEf-LFBf # address_range + .byte 0 # augmentation size 0 + # instructions: + .byte 0x04 # DW_CFA_advance_loc4 + .long LCFIf0-LFBf + .byte 0x0E # DW_CFA_def_cfa_offset 8 + .byte 8 + .byte 0x84 # DW_CFA_offset %ebp, 2 + .byte 2 + .byte 0x04 # DW_CFA_advance_loc4 + .long LCFIf1-LCFIf0 + .byte 0x0D # DW_CFA_def_cfa_register %ebp + .byte 4 + .align 2 +LEFDEf: +_privateSnippetExecutorDouble.eh: +LSFDEd: + .set L$set$d1,LEFDEd-LASFDEd + .long L$set$d1 # length +LASFDEd: + .long LASFDEd-EH_frame1 # CIE_pointer + .long LFBd-. # initial_location + .long LFEd-LFBd # address_range + .byte 0 # augmentation size 0 + # instructions: + .byte 0x04 # DW_CFA_advance_loc4 + .long LCFId0-LFBd + .byte 0x0E # DW_CFA_def_cfa_offset 8 + .byte 8 + .byte 0x84 # DW_CFA_offset %ebp, 2 + .byte 2 + .byte 0x04 # DW_CFA_advance_loc4 + .long LCFId1-LCFId0 + .byte 0x0D # DW_CFA_def_cfa_register %ebp + .byte 4 + .align 2 +LEFDEd: +_privateSnippetExecutorClass.eh: +LSFDEc: + .set L$set$c1,LEFDEc-LASFDEc + .long L$set$c1 # length +LASFDEc: + .long LASFDEc-EH_frame1 # CIE_pointer + .long LFBc-. # initial_location + .long LFEc-LFBc # address_range + .byte 0 # augmentation size 0 + # instructions: + .byte 0x04 # DW_CFA_advance_loc4 + .long LCFIc0-LFBc + .byte 0x0E # DW_CFA_def_cfa_offset 8 + .byte 8 + .byte 0x84 # DW_CFA_offset %ebp, 2 + .byte 2 + .byte 0x04 # DW_CFA_advance_loc4 + .long LCFIc1-LCFIc0 + .byte 0x0D # DW_CFA_def_cfa_register %ebp + .byte 4 + .align 2 +LEFDEc: + .section __IMPORT,__jump_table,symbol_stubs,self_modifying_code+pure_instructions,5 +L_cpp_vtable_call$stub: + .indirect_symbol _cpp_vtable_call + hlt ; hlt ; hlt ; hlt ; hlt + .section __IMPORT,__pointers,non_lazy_symbol_pointers +L___gxx_personality_v0$non_lazy_ptr: + .indirect_symbol ___gxx_personality_v0 + .long 0 + .constructor + .destructor + .align 1 +#endif commit 492f9139c1033b3f069880bff8e7f2857cbca111 Author: David Tardon <dtar...@redhat.com> Date: Sun Sep 23 08:40:15 2012 +0200 add forgotten asm file to build Change-Id: I5c86e369649e71d785af06437b2af633d6805b8d diff --git a/bridges/Library_gcc3_linux_arm.mk b/bridges/Library_gcc3_linux_arm.mk index 81c29d7..95cc915 100644 --- a/bridges/Library_gcc3_linux_arm.mk +++ b/bridges/Library_gcc3_linux_arm.mk @@ -45,6 +45,10 @@ $(eval $(call gb_Library_use_libraries,gcc3_uno,\ $(gb_STDLIBS) \ )) +$(eval $(call gb_Library_add_asmobjects,gcc3_uno,\ + bridges/source/cpp_uno/gcc3_linux_arm/armhelper \ +)) + $(eval $(call gb_Library_add_exception_objects,gcc3_uno,\ bridges/source/cpp_uno/shared/bridge \ bridges/source/cpp_uno/shared/component \ diff --git a/bridges/source/cpp_uno/gcc3_linux_arm/armhelper.S b/bridges/source/cpp_uno/gcc3_linux_arm/armhelper.S deleted file mode 100644 index 27148dc..0000000 --- a/bridges/source/cpp_uno/gcc3_linux_arm/armhelper.S +++ /dev/null @@ -1,52 +0,0 @@ -@ ARM support code for OpenOffice C++/UNO bridging -@ -@ Written by Peter Naulls <pe...@chocky.org> -@ Modified by Caolan McNamara <caol...@redhat.com> -@ Fixed by Michael Casadevall <mcasadev...@kubuntu.org> - -#ifdef __ARM_EABI__ -# define UNWIND -#else -# define UNWIND @ -#endif - -@ If the VFP ABI variant (armhf in Debian/Ubuntu) is used, an additional extra 64 bytes -@ are taken up on the stack (the equivalent of the 8 double precision VFP registers) - -#ifdef __ARM_PCS_VFP -# define PAD 80 -# define DISCARDED 84 -#else -# define PAD 16 -# define DISCARDED 20 -#endif - - .file "armhelper.s" - .text - .align 4 - .global privateSnippetExecutor - .type privateSnippetExecutor, %function -privateSnippetExecutor: - UNWIND .fnstart @ start of unwinder entry - - stmfd sp!, {r0-r3} @ follow other parameters on stack - mov r0, ip @ r0 points to functionoffset/vtable - mov r1, sp @ r1 points to this and params -#ifdef __ARM_PCS_VFP - vpush {d0-d7} @ floating point parameter on stack -#endif - UNWIND .pad #PAD @ throw this data away on exception - @ (see cppuno.cxx:codeSnippet()) - stmfd sp!, {r4,lr} @ save return address - @ (r4 pushed to preserve stack alignment) - UNWIND .save {r4,lr} @ restore these regs on exception - - bl cpp_vtable_call(PLT) - - add sp, sp, #4 @ no need to restore r4 (we didn't touch it) - ldr pc, [sp], #DISCARDED @ return, discarding function arguments - - UNWIND .fnend @ end of unwinder entry - - .size privateSnippetExecutor, . - privateSnippetExecutor - .section .note.GNU-stack,"",%progbits diff --git a/bridges/source/cpp_uno/gcc3_linux_arm/armhelper.s b/bridges/source/cpp_uno/gcc3_linux_arm/armhelper.s new file mode 100644 index 0000000..27148dc --- /dev/null +++ b/bridges/source/cpp_uno/gcc3_linux_arm/armhelper.s @@ -0,0 +1,52 @@ +@ ARM support code for OpenOffice C++/UNO bridging +@ +@ Written by Peter Naulls <pe...@chocky.org> +@ Modified by Caolan McNamara <caol...@redhat.com> +@ Fixed by Michael Casadevall <mcasadev...@kubuntu.org> + +#ifdef __ARM_EABI__ +# define UNWIND +#else +# define UNWIND @ +#endif + +@ If the VFP ABI variant (armhf in Debian/Ubuntu) is used, an additional extra 64 bytes +@ are taken up on the stack (the equivalent of the 8 double precision VFP registers) + +#ifdef __ARM_PCS_VFP +# define PAD 80 +# define DISCARDED 84 +#else +# define PAD 16 +# define DISCARDED 20 +#endif + + .file "armhelper.s" + .text + .align 4 + .global privateSnippetExecutor + .type privateSnippetExecutor, %function +privateSnippetExecutor: + UNWIND .fnstart @ start of unwinder entry + + stmfd sp!, {r0-r3} @ follow other parameters on stack + mov r0, ip @ r0 points to functionoffset/vtable + mov r1, sp @ r1 points to this and params +#ifdef __ARM_PCS_VFP + vpush {d0-d7} @ floating point parameter on stack +#endif + UNWIND .pad #PAD @ throw this data away on exception + @ (see cppuno.cxx:codeSnippet()) + stmfd sp!, {r4,lr} @ save return address + @ (r4 pushed to preserve stack alignment) + UNWIND .save {r4,lr} @ restore these regs on exception + + bl cpp_vtable_call(PLT) + + add sp, sp, #4 @ no need to restore r4 (we didn't touch it) + ldr pc, [sp], #DISCARDED @ return, discarding function arguments + + UNWIND .fnend @ end of unwinder entry + + .size privateSnippetExecutor, . - privateSnippetExecutor + .section .note.GNU-stack,"",%progbits _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits