Fix SBData::SetData() so that it always sets the address byte size correctly and added a test.
llvm-svn: 293102
This commit is contained in:
parent
7b5b7c7444
commit
896b4513e1
|
@ -21,6 +21,26 @@ class SBDataAPICase(TestBase):
|
|||
# Find the line number to break on inside main.cpp.
|
||||
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."""
|
||||
|
|
|
@ -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) => "
|
||||
|
|
Loading…
Reference in New Issue