diff options
author | Greg Clayton <gclayton@apple.com> | 2017-01-25 21:50:28 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2017-01-25 21:50:28 +0000 |
commit | 896b4513e1bb1a96192b71db9da3ed7955778346 (patch) | |
tree | aa4a59f2f929e16bae4ec26a0263d8a477437c5e | |
parent | 7b5b7c74440285814fc5c4c4d2206a1d18857ddf (diff) | |
download | bcm5719-llvm-896b4513e1bb1a96192b71db9da3ed7955778346.tar.gz bcm5719-llvm-896b4513e1bb1a96192b71db9da3ed7955778346.zip |
Fix SBData::SetData() so that it always sets the address byte size correctly and added a test.
llvm-svn: 293102
-rw-r--r-- | lldb/packages/Python/lldbsuite/test/python_api/sbdata/TestSBData.py | 20 | ||||
-rw-r--r-- | lldb/source/API/SBData.cpp | 4 |
2 files changed, 24 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/python_api/sbdata/TestSBData.py b/lldb/packages/Python/lldbsuite/test/python_api/sbdata/TestSBData.py index e853d6567e7..0560ac502dc 100644 --- a/lldb/packages/Python/lldbsuite/test/python_api/sbdata/TestSBData.py +++ b/lldb/packages/Python/lldbsuite/test/python_api/sbdata/TestSBData.py @@ -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() diff --git a/lldb/source/API/SBData.cpp b/lldb/source/API/SBData.cpp index d905d3f272f..301495e520a 100644 --- a/lldb/source/API/SBData.cpp +++ b/lldb/source/API/SBData.cpp @@ -383,7 +383,11 @@ void SBData::SetData(lldb::SBError &error, const void *buf, size_t size, 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) => " |