diff options
author | Enrico Granata <egranata@apple.com> | 2013-06-11 22:06:06 +0000 |
---|---|---|
committer | Enrico Granata <egranata@apple.com> | 2013-06-11 22:06:06 +0000 |
commit | b0c72d99dc912ae672a5e6db86e9fc2b11f8bfb0 (patch) | |
tree | 018e305fa746f5e6ca9b0140192990133998c5af /lldb/scripts/Python/interface | |
parent | bc8fc0f5e0c00d2d09840c615b145e2e2ab35fb7 (diff) | |
download | bcm5719-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.i | 40 |
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) |