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

Marianne Mailhot-Sarrasin via lldb-commits lldb-commits at lists.llvm.org
Mon Feb 29 10:05:41 PST 2016


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/e270237f/attachment-0001.html>


More information about the lldb-commits mailing list