[Lldb-commits] [lldb] r293102 - Fix SBData::SetData() so that it always sets the address byte size correctly and added a test.

Greg Clayton via lldb-commits lldb-commits at lists.llvm.org
Wed Jan 25 13:50:28 PST 2017


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) => "




More information about the lldb-commits mailing list