[Lldb-commits] [lldb] r183793 - <rdar://problem/13646047>
Enrico Granata
egranata at apple.com
Tue Jun 11 15:06:06 PDT 2013
Author: enrico
Date: Tue Jun 11 17:06:06 2013
New Revision: 183793
URL: http://llvm.org/viewvc/llvm-project?rev=183793&view=rev
Log:
<rdar://problem/13646047>
Providing a Python helper SBData.CreateDataFromInt() to make an SBData out of a single integer number
It tries to use the current target, if any, for endianness and pointer size, and it picks a reasonable size on your behalf - if there is no way it can infer anything reasonable it essentially picks a 64-bit Mac as the reference model
Modified:
lldb/trunk/scripts/Python/interface/SBData.i
Modified: lldb/trunk/scripts/Python/interface/SBData.i
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/scripts/Python/interface/SBData.i?rev=183793&r1=183792&r2=183793&view=diff
==============================================================================
--- lldb/trunk/scripts/Python/interface/SBData.i (original)
+++ lldb/trunk/scripts/Python/interface/SBData.i Tue Jun 11 17:06:06 2013
@@ -160,6 +160,46 @@ public:
def all(self):
return self[0:len(self)]
+ @classmethod
+ def CreateDataFromInt (cls, value, size = None, target = None, ptr_size = None, endian = None):
+ import sys
+ lldbmodule = sys.modules[cls.__module__]
+ lldbdict = lldbmodule.__dict__
+ if 'target' in lldbdict:
+ lldbtarget = lldbdict['target']
+ else:
+ lldbtarget = None
+ if target == None and lldbtarget != None and lldbtarget.IsValid():
+ target = lldbtarget
+ if ptr_size == None:
+ if target and target.IsValid():
+ ptr_size = target.addr_size
+ else:
+ ptr_size = 8
+ if endian == None:
+ if target and target.IsValid():
+ endian = target.byte_order
+ else:
+ endian = lldbdict['eByteOrderLittle']
+ if size == None:
+ if value > 2147483647:
+ size = 8
+ elif value < -2147483648:
+ size = 8
+ elif value > 4294967295:
+ size = 8
+ else:
+ size = 4
+ if size == 4:
+ if value < 0:
+ return SBData().CreateDataFromSInt32Array(endian, ptr_size, [value])
+ return SBData().CreateDataFromUInt32Array(endian, ptr_size, [value])
+ if size == 8:
+ if value < 0:
+ return SBData().CreateDataFromSInt64Array(endian, ptr_size, [value])
+ return SBData().CreateDataFromUInt64Array(endian, ptr_size, [value])
+ return None
+
def _make_helper(self, sbdata, getfunc, itemsize):
return self.read_data_helper(sbdata, getfunc, itemsize)
More information about the lldb-commits
mailing list