diff options
author | Jeremy Morse <jeremy.morse@sony.com> | 2019-10-31 16:22:10 +0000 |
---|---|---|
committer | Jeremy Morse <jeremy.morse@sony.com> | 2019-10-31 16:22:10 +0000 |
commit | cb935f345683194e42e6e883d79c5a16479acd74 (patch) | |
tree | cfb11e7bf901b8edf3b78dc97bbb5275190e9b4c /debuginfo-tests/dexter/dex/debugger/dbgeng/dbgeng.py | |
parent | f2cb9c0eabc132152b5b3ad4c87a5a02345a883d (diff) | |
download | bcm5719-llvm-cb935f345683194e42e6e883d79c5a16479acd74.tar.gz bcm5719-llvm-cb935f345683194e42e6e883d79c5a16479acd74.zip |
Revert "Import Dexter to debuginfo-tests"
This reverts commit f78c236efda85af1e526ac35ed535ef4786450e3.
Green dragon breakage was observed; I'll take a look at why.
Diffstat (limited to 'debuginfo-tests/dexter/dex/debugger/dbgeng/dbgeng.py')
-rw-r--r-- | debuginfo-tests/dexter/dex/debugger/dbgeng/dbgeng.py | 163 |
1 files changed, 0 insertions, 163 deletions
diff --git a/debuginfo-tests/dexter/dex/debugger/dbgeng/dbgeng.py b/debuginfo-tests/dexter/dex/debugger/dbgeng/dbgeng.py deleted file mode 100644 index 66d01f03e8f..00000000000 --- a/debuginfo-tests/dexter/dex/debugger/dbgeng/dbgeng.py +++ /dev/null @@ -1,163 +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 - -import sys -import os -import platform - -from dex.debugger.DebuggerBase import DebuggerBase -from dex.dextIR import FrameIR, LocIR, StepIR, StopReason, ValueIR -from dex.dextIR import ProgramState, StackFrame, SourceLocation -from dex.utils.Exceptions import DebuggerException, LoadDebuggerException -from dex.utils.ReturnCode import ReturnCode - -if platform.system() == "Windows": - # Don't load on linux; _load_interface will croak before any names are used. - from . import setup - from . import probe_process - from . import breakpoint - -class DbgEng(DebuggerBase): - def __init__(self, context, *args): - self.breakpoints = [] - self.running = False - self.finished = False - self.step_info = None - super(DbgEng, self).__init__(context, *args) - - def _custom_init(self): - try: - res = setup.setup_everything(self.context.options.executable) - self.client, self.hProcess = res - self.running = True - except Exception as e: - raise Exception('Failed to start debuggee: {}'.format(e)) - - def _custom_exit(self): - setup.cleanup(self.client, self.hProcess) - - def _load_interface(self): - arch = platform.architecture()[0] - machine = platform.machine() - if arch == '32bit' and machine == 'AMD64': - # This python process is 32 bits, but is sitting on a 64 bit machine. - # Bad things may happen, don't support it. - raise LoadDebuggerException('Can\'t run Dexter dbgeng on 32 bit python in a 64 bit environment') - - if platform.system() != 'Windows': - raise LoadDebuggerException('DbgEng supports Windows only') - - # Otherwise, everything was imported earlier - - @classmethod - def get_name(cls): - return 'dbgeng' - - @classmethod - def get_option_name(cls): - return 'dbgeng' - - @property - def frames_below_main(self): - return [] - - @property - def version(self): - # I don't believe there's a well defined DbgEng version, outside of the - # version of Windows being used. - return "1" - - def clear_breakpoints(self): - for x in self.breakpoints: - x.RemoveFlags(breakpoint.BreakpointFlags.DEBUG_BREAKPOINT_ENABLED) - self.client.Control.RemoveBreakpoint(x) - - def add_breakpoint(self, file_, line): - # This is something to implement in the future -- as it stands, Dexter - # doesn't test for such things as "I can set a breakpoint on this line". - # This is only called AFAICT right now to ensure we break on every step. - pass - - def launch(self): - # We are, by this point, already launched. - self.step_info = probe_process.probe_state(self.client) - - def step(self): - res = setup.step_once(self.client) - if not res: - self.finished = True - self.step_info = res - - def go(self): - # We never go -- we always single step. - pass - - def get_step_info(self): - frames = self.step_info - state_frames = [] - - # For now assume the base function is the... function, ignoring - # inlining. - dex_frames = [] - for i, x in enumerate(frames): - # XXX Might be able to get columns out through - # GetSourceEntriesByOffset, not a priority now - loc = LocIR(path=x.source_file, lineno=x.line_no, column=0) - new_frame = FrameIR(function=x.function_name, is_inlined=False, loc=loc) - dex_frames.append(new_frame) - - state_frame = StackFrame(function=new_frame.function, - is_inlined=new_frame.is_inlined, - location=SourceLocation(path=x.source_file, - lineno=x.line_no, - column=0), - watches={}) - for expr in map( - lambda watch, idx=i: self.evaluate_expression(watch, idx), - self.watches): - state_frame.watches[expr.expression] = expr - state_frames.append(state_frame) - - return StepIR( - step_index=self.step_index, frames=dex_frames, - stop_reason=StopReason.STEP, - program_state=ProgramState(state_frames)) - - @property - def is_running(self): - return False # We're never free-running - - @property - def is_finished(self): - return self.finished - - def evaluate_expression(self, expression, frame_idx=0): - # XXX: cdb insists on using '->' to examine fields of structures, - # as it appears to reserve '.' for other purposes. - fixed_expr = expression.replace('.', '->') - - orig_scope_idx = self.client.Symbols.GetCurrentScopeFrameIndex() - self.client.Symbols.SetScopeFrameByIndex(frame_idx) - - res = self.client.Control.Evaluate(fixed_expr) - if res is not None: - result, typename = self.client.Control.Evaluate(fixed_expr) - could_eval = True - else: - result, typename = (None, None) - could_eval = False - - self.client.Symbols.SetScopeFrameByIndex(orig_scope_idx) - - return ValueIR( - expression=expression, - value=str(result), - type_name=typename, - error_string="", - could_evaluate=could_eval, - is_optimized_away=False, - is_irretrievable=not could_eval) |