diff options
Diffstat (limited to 'debuginfo-tests/dexter/dex/debugger/dbgeng/utils.py')
-rw-r--r-- | debuginfo-tests/dexter/dex/debugger/dbgeng/utils.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/debuginfo-tests/dexter/dex/debugger/dbgeng/utils.py b/debuginfo-tests/dexter/dex/debugger/dbgeng/utils.py new file mode 100644 index 00000000000..0c9197aa1c9 --- /dev/null +++ b/debuginfo-tests/dexter/dex/debugger/dbgeng/utils.py @@ -0,0 +1,47 @@ +# DExTer : Debugging Experience Tester +# ~~~~~~ ~ ~~ ~ ~~ +# +# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +# See https://llvm.org/LICENSE.txt for license information. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +from ctypes import * + +# Error codes are negative when received by python, but are typically +# represented by unsigned hex elsewhere. Subtract 2^32 from the unsigned +# hex to produce negative error codes. +E_NOINTERFACE = 0x80004002 - 0x100000000 +E_FAIL = 0x80004005 - 0x100000000 +E_EINVAL = 0x80070057 - 0x100000000 +E_INTERNALEXCEPTION = 0x80040205 - 0x100000000 +S_FALSE = 1 + +# This doesn't fit into any convenient category +DEBUG_ANY_ID = 0xFFFFFFFF + +class WinError(Exception): + def __init__(self, msg, hstatus): + self.hstatus = hstatus + super(WinError, self).__init__(msg) + +def aborter(res, msg, ignore=[]): + if res != 0 and res not in ignore: + # Convert a negative error code to a positive unsigned one, which is + # now NTSTATUSes appear in documentation. + if res < 0: + res += 0x100000000 + msg = '{:08X} : {}'.format(res, msg) + raise WinError(msg, res) + +IID_Data4_Type = c_ubyte * 8 + +class IID(Structure): + _fields_ = [ + ("Data1", c_uint), + ("Data2", c_ushort), + ("Data3", c_ushort), + ("Data4", IID_Data4_Type) + ] + +c_ulong_p = POINTER(c_ulong) +c_ulong64_p = POINTER(c_ulonglong) |