[Lldb-commits] [lldb] r262041 - Fix bug with register values byte order in expression evaluation.

Chaoren Lin via lldb-commits lldb-commits at lists.llvm.org
Mon Feb 29 10:13:38 PST 2016


I think the issue is that on OS X, GetScalarValue fails to return false
when the value is *not* actually scalar. When it's not scalar, it should be
using WriteMemory instead, right? Or is it possible for GetScalarValue to
succeed but return something with a different byte size?

On Mon, Feb 29, 2016 at 10:05 AM, Marianne Mailhot-Sarrasin <
marianne1717 at hotmail.com> wrote:

> Really sorry about the breakage.
>
> Is there anybody who understands what is the issue of using
> WriteScalarToMemory when the register value is a scalar?
>
> From my understanding, using WriteScalarToMemory handles the byte swap
> needed when the Host endianness is different from the Target endianness,
> which is not done by WriteMemory. Therefor using WriteScalarToMemory is
> fixing the evaluation of the registers on my out-of-tree target.
>
>
> 2016-02-29 11:06 GMT-05:00 Aidan Dodds <aidan at codeplay.com>:
>
>> Sorry about the breakage, and thanks for working on a patch Chaoren.
>> Hopefully Marianne will revise her merge request if this fix is still
>> important for her.
>>
>> On 28/02/2016 00:06, Todd Fiala wrote:
>>
>> I brought the state of the lines changed there to what they were prior to
>> the change. If you adjusted those same lines, then yes that got undone.
>>
>> We were failing different tests in those files.  Your change may have
>> fixed the new issues on Linux, but did not address the new failures on OS
>> X.  The OS X bot went green after the revert.
>>
>> -Todd
>>
>> On Feb 27, 2016, at 4:01 PM, Chaoren Lin < <chaorenl at google.com>
>> chaorenl at google.com> wrote:
>>
>> I thought I fixed it with  <http://reviews.llvm.org/D17658>
>> http://reviews.llvm.org/D17658. Did you revert that as well?
>>
>> On Sat, Feb 27, 2016 at 3:14 PM, Todd Fiala < <todd.fiala at gmail.com>
>> todd.fiala at gmail.com> wrote:
>>
>>> Hi all,
>>>
>>> The new assert was failing on the OS X testbot here:
>>> http://lab.llvm.org:8080/green/job/lldb_build_test/
>>>
>>> The nag mail didn't make it to you since we have it only fire on the
>>> transition from good build to bad build, and Tamas had the privilege of
>>> earning that with a minor Xcode breakage just shortly before this issue
>>> showed up.  However, that bot as been broken since this change went in.
>>>
>>> I reverted it in r262156.
>>>
>>> Feel free to reapply if you have a suggested fix for the test failure
>>> introduced.
>>>
>>> Thanks!
>>>
>>> -Todd
>>>
>>> On Fri, Feb 26, 2016 at 12:08 PM, Chaoren Lin via lldb-commits <
>>> lldb-commits at lists.llvm.org> wrote:
>>>
>>>> Hmm. Weird. That assert is failing on Linux:
>>>> <http://lab.llvm.org:8011/builders/lldb-x86_64-ubuntu-14.04-cmake/builds/11833>
>>>> http://lab.llvm.org:8011/builders/lldb-x86_64-ubuntu-14.04-cmake/builds/11833
>>>>
>>>> On Fri, Feb 26, 2016 at 9:40 AM, Aidan Dodds via lldb-commits <
>>>> <lldb-commits at lists.llvm.org>lldb-commits at lists.llvm.org> wrote:
>>>>
>>>>> Author: aidandodds
>>>>> Date: Fri Feb 26 11:40:50 2016
>>>>> New Revision: 262041
>>>>>
>>>>> URL: http://llvm.org/viewvc/llvm-project?rev=262041&view=rev
>>>>> Log:
>>>>> Fix bug with register values byte order in expression evaluation.
>>>>>
>>>>> The evaluation of expressions containing register values was broken
>>>>> for targets for which endianness differs from host.
>>>>>
>>>>> Committed on behalf of: mamai < <marianne.mailhot.sarrasin at gmail.com>
>>>>> marianne.mailhot.sarrasin at gmail.com>
>>>>>
>>>>> Differential revision: <http://reviews.llvm.org/D17167>
>>>>> http://reviews.llvm.org/D17167
>>>>>
>>>>> Modified:
>>>>>     lldb/trunk/source/Expression/Materializer.cpp
>>>>>
>>>>> Modified: lldb/trunk/source/Expression/Materializer.cpp
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/Materializer.cpp?rev=262041&r1=262040&r2=262041&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- lldb/trunk/source/Expression/Materializer.cpp (original)
>>>>> +++ lldb/trunk/source/Expression/Materializer.cpp Fri Feb 26 11:40:50
>>>>> 2016
>>>>> @@ -26,6 +26,7 @@
>>>>>  #include "lldb/Target/StackFrame.h"
>>>>>  #include "lldb/Target/Target.h"
>>>>>  #include "lldb/Target/Thread.h"
>>>>> +#include "lldb/Utility/LLDBAssert.h"
>>>>>
>>>>>  using namespace lldb_private;
>>>>>
>>>>> @@ -1275,9 +1276,14 @@ public:
>>>>>          m_register_contents.reset(new
>>>>> DataBufferHeap(register_data.GetDataStart(), register_data.GetByteSize()));
>>>>>
>>>>>          Error write_error;
>>>>> -
>>>>> -        map.WriteMemory(load_addr, register_data.GetDataStart(),
>>>>> register_data.GetByteSize(), write_error);
>>>>> -
>>>>> +
>>>>> +        Scalar scalar;
>>>>> +        reg_value.GetScalarValue(scalar);
>>>>> +
>>>>> +        lldbassert(scalar.GetByteSize() ==
>>>>> register_data.GetByteSize());
>>>>> +
>>>>> +        map.WriteScalarToMemory(load_addr, scalar,
>>>>> scalar.GetByteSize(), write_error);
>>>>> +
>>>>>          if (!write_error.Success())
>>>>>          {
>>>>>              err.SetErrorStringWithFormat("couldn't write the contents
>>>>> of register %s: %s", m_register_info.name, write_error.AsCString());
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> lldb-commits mailing list
>>>>> lldb-commits at lists.llvm.org
>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> lldb-commits mailing list
>>>> lldb-commits at lists.llvm.org
>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
>>>>
>>>>
>>>
>>>
>>> --
>>> -Todd
>>>
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20160229/e5fe5ad0/attachment-0001.html>


More information about the lldb-commits mailing list