09.11.2010 01:08, Joe Damato wrote:
On Wed, Nov 3, 2010 at 11:00 AM, Petr Machata<[email protected]> wrote:
02.11.2010 17:49, Petr Machata wrote:
The problem
here is that the register set is preserved in struct Process, not in
struct callstack_element, and so is overwritten when nested call appears
which has right-hand parameters too.
This is now fixed here:
https://github.com/pmachata/ltrace/tree/nested
That branch forks off this branch:
https://github.com/pmachata/ltrace/tree/float
which fixes a problem with passing doubles in arguments and return values on
x86_64, and simplifies the whole argument-preserving scenario a bit.
Both add test cases for bugs that they fix.
I tried these changes on an x86 ubuntu VM and two tests failed:
FAIL: func_double(3.40*, -3.40*).*= -3.40* in
/home/joe/code/ltrace/testsuite/ltrace.main/parameters.ltrace for 0
times ,should be 1
FAIL:<... func_call resumed> \"x\", \"y\") in
/home/joe/code/ltrace/testsuite/ltrace.main/parameters.ltrace for 0
times ,should be 1
Hmm, these are the new tests.
The .ltrace output is below.
func_double(0.000000, 0.000000) = 0.000000
func_call(<unfinished ...>
func_work("x") =<void>
<... func_call resumed> "y", "Z\213\014$\211\004$\213D$\004\302\014") =<void>
+++ exited (status 0) +++
Yep, it's broken. The question is why :) That's how it looked before I
fixed it, are you sure that you rebuilt ltrace? If yes, can you send me
the binaries? That is the files "parameters" and "libparameters.so"
from testsuite/ltrace.main. I'll need to look inside.
Thanks,
PM
_______________________________________________
Ltrace-devel mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/ltrace-devel