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