Apparently, Dave Martin at worked on an updated patch which covers more
combinations of arguments:
http://pastebin.ubuntu.com/395620/
--- armhelper.s 2007-12-12 15:35:44.000000000 +0000
+++ 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
--
Foobared on armel
https://bugs.launchpad.net/bugs/537458
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs