[Lldb-commits] [PATCH] D17167: Fix bug with register values byte order in expression evaluation

Marianne Mailhot-Sarrasin via lldb-commits lldb-commits at lists.llvm.org
Thu Feb 11 13:21:09 PST 2016


mamai created this revision.
mamai added a reviewer: spyffe.
mamai added subscribers: phlav, lldb-commits.
mamai set the repository for this revision to rL LLVM.

The evaluation of expressions containing register values was broken for targets for which endianness differs from host.

This patch fixes issues like:
(lldb) reg read pc
      pc = 0x00400020  arithmetic.elf`main + 32 at main.c:12
(lldb) expr -f hex -- $pc
(unsigned int) $2 = 0x20004000

Where the second command will now give the right value (0x00400020).

Repository:
  rL LLVM

http://reviews.llvm.org/D17167

Files:
  source/Expression/Materializer.cpp

Index: source/Expression/Materializer.cpp
===================================================================
--- source/Expression/Materializer.cpp
+++ source/Expression/Materializer.cpp
@@ -1275,9 +1275,12 @@
         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);
+
+        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());


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D17167.47708.patch
Type: text/x-patch
Size: 842 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20160211/a5a723f4/attachment.bin>


More information about the lldb-commits mailing list