[Lldb-commits] [PATCH] D18978: Support Linux on SystemZ as platform

Ulrich Weigand via lldb-commits lldb-commits at lists.llvm.org
Fri Apr 15 02:48:04 PDT 2016

Pavel Labath <labath at 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

  floating = <read memory from 0xffffffffffffd4fc failed (0 of 4 bytes

  character = <read memory from 0xffffffffffffd500 failed (0 of 1 bytes

I've fixed this now, and those tests no longer fail on my system.
I'm planning on recommitted the fixed patch shortly.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20160415/8184dde9/attachment.html>

More information about the lldb-commits mailing list