summaryrefslogtreecommitdiffstats
path: root/debuginfo-tests/dexter/dex/debugger/dbgeng/client.py
diff options
context:
space:
mode:
Diffstat (limited to 'debuginfo-tests/dexter/dex/debugger/dbgeng/client.py')
-rw-r--r--debuginfo-tests/dexter/dex/debugger/dbgeng/client.py185
1 files changed, 0 insertions, 185 deletions
diff --git a/debuginfo-tests/dexter/dex/debugger/dbgeng/client.py b/debuginfo-tests/dexter/dex/debugger/dbgeng/client.py
deleted file mode 100644
index a65e4ded2f3..00000000000
--- a/debuginfo-tests/dexter/dex/debugger/dbgeng/client.py
+++ /dev/null
@@ -1,185 +0,0 @@
-# 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 *
-from enum import *
-from functools import partial
-
-from .utils import *
-from . import control
-from . import symbols
-from . import sysobjs
-
-class DebugAttach(IntFlag):
- DEBUG_ATTACH_DEFAULT = 0
- DEBUG_ATTACH_NONINVASIVE = 1
- DEBUG_ATTACH_EXISTING = 2
- DEBUG_ATTACH_NONINVASIVE_NO_SUSPEND = 4
- DEBUG_ATTACH_INVASIVE_NO_INITIAL_BREAK = 8
- DEBUG_ATTACH_INVASIVE_RESUME_PROCESS = 0x10
- DEBUG_ATTACH_NONINVASIVE_ALLOW_PARTIAL = 0x20
-
-# UUID for DebugClient7 interface.
-DebugClient7IID = IID(0x13586be3, 0x542e, 0x481e, IID_Data4_Type(0xb1, 0xf2, 0x84, 0x97, 0xba, 0x74, 0xf9, 0xa9 ))
-
-class IDebugClient7(Structure):
- pass
-
-class IDebugClient7Vtbl(Structure):
- wrp = partial(WINFUNCTYPE, c_long, POINTER(IDebugClient7))
- idc_queryinterface = wrp(POINTER(IID), POINTER(c_void_p))
- idc_attachprocess = wrp(c_longlong, c_long, c_long)
- idc_detachprocesses = wrp()
- _fields_ = [
- ("QueryInterface", idc_queryinterface),
- ("AddRef", c_void_p),
- ("Release", c_void_p),
- ("AttachKernel", c_void_p),
- ("GetKernelConnectionOptions", c_void_p),
- ("SetKernelConnectionOptions", c_void_p),
- ("StartProcessServer", c_void_p),
- ("ConnectProcessServer", c_void_p),
- ("DisconnectProcessServer", c_void_p),
- ("GetRunningProcessSystemIds", c_void_p),
- ("GetRunningProcessSystemIdsByExecutableName", c_void_p),
- ("GetRunningProcessDescription", c_void_p),
- ("AttachProcess", idc_attachprocess),
- ("CreateProcess", c_void_p),
- ("CreateProcessAndAttach", c_void_p),
- ("GetProcessOptions", c_void_p),
- ("AddProcessOptions", c_void_p),
- ("RemoveProcessOptions", c_void_p),
- ("SetProcessOptions", c_void_p),
- ("OpenDumpFile", c_void_p),
- ("WriteDumpFile", c_void_p),
- ("ConnectSession", c_void_p),
- ("StartServer", c_void_p),
- ("OutputServers", c_void_p),
- ("TerminateProcesses", c_void_p),
- ("DetachProcesses", idc_detachprocesses),
- ("EndSession", c_void_p),
- ("GetExitCode", c_void_p),
- ("DispatchCallbacks", c_void_p),
- ("ExitDispatch", c_void_p),
- ("CreateClient", c_void_p),
- ("GetInputCallbacks", c_void_p),
- ("SetInputCallbacks", c_void_p),
- ("GetOutputCallbacks", c_void_p),
- ("SetOutputCallbacks", c_void_p),
- ("GetOutputMask", c_void_p),
- ("SetOutputMask", c_void_p),
- ("GetOtherOutputMask", c_void_p),
- ("SetOtherOutputMask", c_void_p),
- ("GetOutputWidth", c_void_p),
- ("SetOutputWidth", c_void_p),
- ("GetOutputLinePrefix", c_void_p),
- ("SetOutputLinePrefix", c_void_p),
- ("GetIdentity", c_void_p),
- ("OutputIdentity", c_void_p),
- ("GetEventCallbacks", c_void_p),
- ("SetEventCallbacks", c_void_p),
- ("FlushCallbacks", c_void_p),
- ("WriteDumpFile2", c_void_p),
- ("AddDumpInformationFile", c_void_p),
- ("EndProcessServer", c_void_p),
- ("WaitForProcessServerEnd", c_void_p),
- ("IsKernelDebuggerEnabled", c_void_p),
- ("TerminateCurrentProcess", c_void_p),
- ("DetachCurrentProcess", c_void_p),
- ("AbandonCurrentProcess", c_void_p),
- ("GetRunningProcessSystemIdByExecutableNameWide", c_void_p),
- ("GetRunningProcessDescriptionWide", c_void_p),
- ("CreateProcessWide", c_void_p),
- ("CreateProcessAndAttachWide", c_void_p),
- ("OpenDumpFileWide", c_void_p),
- ("WriteDumpFileWide", c_void_p),
- ("AddDumpInformationFileWide", c_void_p),
- ("GetNumberDumpFiles", c_void_p),
- ("GetDumpFile", c_void_p),
- ("GetDumpFileWide", c_void_p),
- ("AttachKernelWide", c_void_p),
- ("GetKernelConnectionOptionsWide", c_void_p),
- ("SetKernelConnectionOptionsWide", c_void_p),
- ("StartProcessServerWide", c_void_p),
- ("ConnectProcessServerWide", c_void_p),
- ("StartServerWide", c_void_p),
- ("OutputServerWide", c_void_p),
- ("GetOutputCallbacksWide", c_void_p),
- ("SetOutputCallbacksWide", c_void_p),
- ("GetOutputLinePrefixWide", c_void_p),
- ("SetOutputLinePrefixWide", c_void_p),
- ("GetIdentityWide", c_void_p),
- ("OutputIdentityWide", c_void_p),
- ("GetEventCallbacksWide", c_void_p),
- ("SetEventCallbacksWide", c_void_p),
- ("CreateProcess2", c_void_p),
- ("CreateProcess2Wide", c_void_p),
- ("CreateProcessAndAttach2", c_void_p),
- ("CreateProcessAndAttach2Wide", c_void_p),
- ("PushOutputLinePrefix", c_void_p),
- ("PushOutputLinePrefixWide", c_void_p),
- ("PopOutputLinePrefix", c_void_p),
- ("GetNumberInputCallbacks", c_void_p),
- ("GetNumberOutputCallbacks", c_void_p),
- ("GetNumberEventCallbacks", c_void_p),
- ("GetQuitLockString", c_void_p),
- ("SetQuitLockString", c_void_p),
- ("GetQuitLockStringWide", c_void_p),
- ("SetQuitLockStringWide", c_void_p),
- ("SetEventContextCallbacks", c_void_p),
- ("SetClientContext", c_void_p),
- ]
-
-IDebugClient7._fields_ = [("lpVtbl", POINTER(IDebugClient7Vtbl))]
-
-class Client(object):
- def __init__(self):
- DbgEng = WinDLL("DbgEng")
- DbgEng.DebugCreate.argtypes = [POINTER(IID), POINTER(POINTER(IDebugClient7))]
- DbgEng.DebugCreate.restype = c_ulong
-
- # Call DebugCreate to create a new debug client
- ptr = POINTER(IDebugClient7)()
- res = DbgEng.DebugCreate(byref(DebugClient7IID), ptr)
- aborter(res, "DebugCreate")
- self.client = ptr.contents
- self.vt = vt = self.client.lpVtbl.contents
-
- def QI(iface, ptr):
- return vt.QueryInterface(self.client, byref(iface), byref(ptr))
-
- # Query for a control object
- ptr = c_void_p()
- res = QI(control.DebugControl7IID, ptr)
- aborter(res, "QueryInterface control")
- self.control_ptr = cast(ptr, POINTER(control.IDebugControl7))
- self.Control = control.Control(self.control_ptr)
-
- # Query for a SystemObjects object
- ptr = c_void_p()
- res = QI(sysobjs.DebugSystemObjects4IID, ptr)
- aborter(res, "QueryInterface sysobjects")
- self.sysobjects_ptr = cast(ptr, POINTER(sysobjs.IDebugSystemObjects4))
- self.SysObjects = sysobjs.SysObjects(self.sysobjects_ptr)
-
- # Query for a Symbols object
- ptr = c_void_p()
- res = QI(symbols.DebugSymbols5IID, ptr)
- aborter(res, "QueryInterface debugsymbosl5")
- self.symbols_ptr = cast(ptr, POINTER(symbols.IDebugSymbols5))
- self.Symbols = symbols.Symbols(self.symbols_ptr)
-
- def AttachProcess(self, pid):
- # Zero process-server id means no process-server.
- res = self.vt.AttachProcess(self.client, 0, pid, DebugAttach.DEBUG_ATTACH_DEFAULT)
- aborter(res, "AttachProcess")
- return
-
- def DetachProcesses(self):
- res = self.vt.DetachProcesses(self.client)
- aborter(res, "DetachProcesses")
- return
OpenPOWER on IntegriCloud