summaryrefslogtreecommitdiffstats
path: root/lldb/scripts/Python/interface
diff options
context:
space:
mode:
authorEnrico Granata <egranata@apple.com>2013-06-11 22:06:06 +0000
committerEnrico Granata <egranata@apple.com>2013-06-11 22:06:06 +0000
commitb0c72d99dc912ae672a5e6db86e9fc2b11f8bfb0 (patch)
tree018e305fa746f5e6ca9b0140192990133998c5af /lldb/scripts/Python/interface
parentbc8fc0f5e0c00d2d09840c615b145e2e2ab35fb7 (diff)
downloadbcm5719-llvm-b0c72d99dc912ae672a5e6db86e9fc2b11f8bfb0.tar.gz
bcm5719-llvm-b0c72d99dc912ae672a5e6db86e9fc2b11f8bfb0.zip
<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 llvm-svn: 183793
Diffstat (limited to 'lldb/scripts/Python/interface')
-rw-r--r--lldb/scripts/Python/interface/SBData.i40
1 files changed, 40 insertions, 0 deletions
diff --git a/lldb/scripts/Python/interface/SBData.i b/lldb/scripts/Python/interface/SBData.i
index fbc0f0837d0..5f22bd81b23 100644
--- a/lldb/scripts/Python/interface/SBData.i
+++ b/lldb/scripts/Python/interface/SBData.i
@@ -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)
OpenPOWER on IntegriCloud