From 43766d6f1274decc804b3f3a32e1bb2b127d2f7a Mon Sep 17 00:00:00 2001 From: Johnny Chen Date: Wed, 2 Mar 2011 01:36:45 +0000 Subject: Add two utility functions to lldbutil.py: o int_to_bytearray() o bytearray_to_int() They return/interpret the bytearray in the little endian format. For big endian, simply perform ba.reverse() on the bytearray object. And modify TestProcessAPI.py to take advantage of the functions. llvm-svn: 126813 --- lldb/test/python_api/process/TestProcessAPI.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'lldb/test/python_api/process/TestProcessAPI.py') diff --git a/lldb/test/python_api/process/TestProcessAPI.py b/lldb/test/python_api/process/TestProcessAPI.py index 1e92fa309d3..615668b115e 100644 --- a/lldb/test/python_api/process/TestProcessAPI.py +++ b/lldb/test/python_api/process/TestProcessAPI.py @@ -174,20 +174,18 @@ class ProcessAPITestCase(TestBase): # OK, let's get the hex location of the variable. location = int(val.GetLocation(frame), 16) + from lldbutil import int_to_bytearray, bytearray_to_int byteSize = val.GetByteSize() - byteOrder = self.process.GetByteOrder() - bytes = bytearray(byteSize) + bytes = int_to_bytearray(256, byteSize) + byteOrder = self.process.GetByteOrder() if byteOrder == lldb.eByteOrderBig: - # 256 in big endian => 0x00000100 - # the second byte counted from the end is to be 0b00000001 - bytes[-2] = 0b00000001 + bytes.reverse() elif byteOrder == lldb.eByteOrderLittle: - # 256 in little endian => 0x00010000 - # the second byte counted from the start is to be 0b00000001 - bytes[1] = 0b00000001 + pass else: # Neither big endian nor little endian? Return for now. + # Add more logic here if we want to handle other types. return # The program logic makes the 'my_int' variable to have int type and value of 0. @@ -211,12 +209,14 @@ class ProcessAPITestCase(TestBase): if not error.Success(): self.fail("SBProcess.ReadMemory() failed") new_bytes = bytearray(content, "ascii") + + # The bytearray_to_int utility function expects a little endian bytearray. if byteOrder == lldb.eByteOrderBig: - if new_bytes[-2] != 0b00000001: - self.fail("Memory content read from 'my_int' does not match (int)256") - elif byteOrder == lldb.eByteOrderLittle: - if new_bytes[1] != 0b00000001: - self.fail("Memory content read from 'my_int' does not match (int)256") + new_bytes.reverse() + + new_value = bytearray_to_int(new_bytes, byteSize) + if new_value != 256: + self.fail("Memory content read from 'my_int' does not match (int)256") # Dump the memory content.... for i in new_bytes: -- cgit v1.2.3