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 < marianne1...@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 <ai...@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 < <chaor...@google.com> >> chaor...@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.fi...@gmail.com> >> todd.fi...@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@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@lists.llvm.org>lldb-commits@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.sarra...@gmail.com> >>>>> marianne.mailhot.sarra...@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@lists.llvm.org >>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits >>>>> >>>> >>>> >>>> _______________________________________________ >>>> lldb-commits mailing list >>>> lldb-commits@lists.llvm.org >>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits >>>> >>>> >>> >>> >>> -- >>> -Todd >>> >> >> >> >
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits