Author: gclayton
Date: Wed Jan 25 15:50:28 2017
New Revision: 293102

URL: http://llvm.org/viewvc/llvm-project?rev=293102&view=rev
Log:
Fix SBData::SetData() so that it always sets the address byte size correctly 
and added a test.


Modified:
    lldb/trunk/packages/Python/lldbsuite/test/python_api/sbdata/TestSBData.py
    lldb/trunk/source/API/SBData.cpp

Modified: 
lldb/trunk/packages/Python/lldbsuite/test/python_api/sbdata/TestSBData.py
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/python_api/sbdata/TestSBData.py?rev=293102&r1=293101&r2=293102&view=diff
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/python_api/sbdata/TestSBData.py 
(original)
+++ lldb/trunk/packages/Python/lldbsuite/test/python_api/sbdata/TestSBData.py 
Wed Jan 25 15:50:28 2017
@@ -22,6 +22,26 @@ class SBDataAPICase(TestBase):
         self.line = line_number('main.cpp', '// set breakpoint here')
 
     @add_test_categories(['pyapi'])
+    def test_byte_order_and_address_byte_size(self):
+        """Test the SBData::SetData() to ensure the byte order and address 
+        byte size are obeyed"""
+        addr_data = '\x11\x22\x33\x44\x55\x66\x77\x88'
+        error = lldb.SBError()
+        data = lldb.SBData()
+        data.SetData(error, addr_data, lldb.eByteOrderBig, 4)
+        addr = data.GetAddress(error, 0)
+        self.assertTrue(addr == 0x11223344);
+        data.SetData(error, addr_data, lldb.eByteOrderBig, 8)
+        addr = data.GetAddress(error, 0)
+        self.assertTrue(addr == 0x1122334455667788);
+        data.SetData(error, addr_data, lldb.eByteOrderLittle, 4)
+        addr = data.GetAddress(error, 0)
+        self.assertTrue(addr == 0x44332211);
+        data.SetData(error, addr_data, lldb.eByteOrderLittle, 8)
+        addr = data.GetAddress(error, 0)
+        self.assertTrue(addr == 0x8877665544332211);
+
+    @add_test_categories(['pyapi'])
     def test_with_run_command(self):
         """Test the SBData APIs."""
         self.build()

Modified: lldb/trunk/source/API/SBData.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBData.cpp?rev=293102&r1=293101&r2=293102&view=diff
==============================================================================
--- lldb/trunk/source/API/SBData.cpp (original)
+++ lldb/trunk/source/API/SBData.cpp Wed Jan 25 15:50:28 2017
@@ -383,7 +383,11 @@ void SBData::SetData(lldb::SBError &erro
   if (!m_opaque_sp.get())
     m_opaque_sp.reset(new DataExtractor(buf, size, endian, addr_size));
   else
+  {
     m_opaque_sp->SetData(buf, size, endian);
+    m_opaque_sp->SetAddressByteSize(addr_size);
+  }
+
   if (log)
     log->Printf("SBData::SetData (error=%p,buf=%p,size=%" PRIu64
                 ",endian=%d,addr_size=%c) => "


_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to