------------------------------------------------------------ revno: 1857 committer: Rene Engelhard <r...@debian.org> branch nick: unstable timestamp: Wed 2010-03-17 00:20:04 +0100 message: update branch_directly_to_cpp_vtable_call_on_arm.diff modified: changelog patches/branch_directly_to_cpp_vtable_call_on_arm.diff
=== modified file 'changelog' --- a/changelog 2010-03-16 00:05:57 +0000 +++ b/changelog 2010-03-16 23:20:04 +0000 @@ -20,7 +20,7 @@ - disable system-boost on lenny - remove ant1.7 workaround, add build-conflicts against ant 1.8.0-{1,2,3} - -- Rene Engelhard <r...@debian.org> Tue, 16 Mar 2010 00:59:52 +0100 + -- Rene Engelhard <r...@debian.org> Wed, 17 Mar 2010 00:19:45 +0100 openoffice.org (1:3.2.0-4) unstable; urgency=low
=== modified file 'patches/branch_directly_to_cpp_vtable_call_on_arm.diff' --- a/patches/branch_directly_to_cpp_vtable_call_on_arm.diff 2010-03-15 01:45:42 +0000 +++ b/patches/branch_directly_to_cpp_vtable_call_on_arm.diff 2010-03-16 23:20:04 +0000 @@ -1,5 +1,5 @@ Description: branch directly to cpp vtable call on arm -Origin: https://bugs.launchpad.net/ubuntu/+source/openoffice.org/+bug/417009/comments/69 +Origin: http://launchpadlibrarian.net/41027177/fix_ooo_arm.patch Bug: http://www.openoffice.org/issues/show_bug.cgi?id=105359 Origin: vendor @@ -22,22 +22,36 @@ index 0000000..c6a3152 --- /dev/null +++ openoffice.org-3.2.0/ooo-build-3-2-0-8/patches/dev300/branch_directly_to_cpp_vtable_call_on_arm.diff -@@ -0,0 +1,18 @@ -+--- bridges/source/cpp_uno/gcc3_linux_arm/armhelper.s 2007-12-12 15:35:44.000000000 +0000 -++++ bridges/source/cpp_uno/gcc3_linux_arm/armhelper.s 2010-03-11 16:22:29.000000000 +0000 -+@@ -10,13 +10,5 @@ -+ privateSnippetExecutor: -+ stmfd sp!, {r0-r3} @ follow other parameters on stack -+ mov r0, ip @ r0 points to functionoffset/vtable -+- mov ip, sp @ fix up the ip -+- stmfd sp!, {fp,ip,lr,pc} @ 8 x 4 => stack remains 8 aligned -+- sub fp, ip, #4 @ set frame pointer -+- -+- add r1, sp, #16 @ r1 points to this and params -+- bl cpp_vtable_call(PLT) -+- -+- add sp, sp, #32 @ restore stack -+- ldr fp, [sp, #-32] @ restore frame pointer -+- ldr pc, [sp, #-24] @ return -++ mov r1, sp @ r1 points to this and params -++ b cpp_vtable_call(PLT) +@@ -0,0 +1,32 @@ ++--- bridges/source/cpp_uno/gcc3_linux_arm/armhelper.s 2007-12-12 15:35:44.000000000 +0000 +++++ bridges/source/cpp_uno/gcc3_linux_arm/armhelper.s 2010-03-15 11:57:20.000000000 +0000 ++@@ -8,15 +8,22 @@ ++ .global privateSnippetExecutor ++ .type privateSnippetExecutor, %function ++ privateSnippetExecutor: +++ .fnstart @ start of unwinder entry +++ ++ stmfd sp!, {r0-r3} @ follow other parameters on stack +++ .pad #16 @ throw this data away on exception ++ mov r0, ip @ r0 points to functionoffset/vtable ++- mov ip, sp @ fix up the ip ++- stmfd sp!, {fp,ip,lr,pc} @ 8 x 4 => stack remains 8 aligned ++- sub fp, ip, #4 @ set frame pointer +++ mov r1, sp @ r1 points to this and params +++ @ (see cppuno.cxx:codeSnippet()) +++ stmfd sp!, {r4,lr} @ save return address +++ @ (r4 pushed to preserve stack alignment) +++ .save {r4,lr} @ restore these regs on exception ++ ++- add r1, sp, #16 @ r1 points to this and params ++ bl cpp_vtable_call(PLT) ++ ++- add sp, sp, #32 @ restore stack ++- ldr fp, [sp, #-32] @ restore frame pointer ++- ldr pc, [sp, #-24] @ return +++ add sp, sp, #4 @ no need to restore r4 (we didn't touch it) +++ ldr pc, [sp], #20 @ return, discarding function arguments +++ +++ .fnend @ end of unwinder entry +++ +++ .size privateSnippetExecutor, . - privateSnippetExecutor