Pavel Labath <lab...@google.com> 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
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to