Pavel Labath <[email protected]> wrote on 15.04.2016 11:19:35:
> Thanks a lot for cleaning that up. I hope you'll be able to find the
> cause of the 32-bit problems quickly. If you need help reproducing the
> errors, I can send you some of the detailed logs from our buildbots.
I did manage to find the cause of the 32-bit problems now. The
modified Scalar::Promote routine made incorrect decisions on when
to zero-extend and when to sign-extend the incoming value. This
needs to be done based on the signedness of the *source* type of
the Promote, not the target type, which my patch got wrong.
This caused LLDB to incorrectly sign-extend 32-bit target pointer
values to 64-bit host values, which resulted in ptrace errors when
attempting to access target memory at those locations:
AssertionError: False is not True : 'frame variable one' returns expected
result, got '(i_am_cool) one = {
integer = <read memory from 0xffffffffffffd4f8 failed (0 of 4 bytes
read)>
floating = <read memory from 0xffffffffffffd4fc failed (0 of 4 bytes
read)>
character = <read memory from 0xffffffffffffd500 failed (0 of 1 bytes
read)>
I've fixed this now, and those tests no longer fail on my system.
I'm planning on recommitted the fixed patch shortly.
Bye,
Ulrich
_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits