From 3e5f3f3f9a8d3f197834bbfcf5029f771df89754 Mon Sep 17 00:00:00 2001 From: vit9696 Date: Sun, 22 Mar 2020 20:36:25 +0300 Subject: [PATCH] Debug: Separate GdbSyms target as it contains invalid addresses --- Debug/Scripts/lldb_uefi.py | 24 +++++++++++++++++++++++- Debug/runlldb.tool | 2 +- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/Debug/Scripts/lldb_uefi.py b/Debug/Scripts/lldb_uefi.py index c0c452c3..40385418 100644 --- a/Debug/Scripts/lldb_uefi.py +++ b/Debug/Scripts/lldb_uefi.py @@ -449,12 +449,34 @@ class ReloadUefi: if opt == "-o": self.offset_by_headers = True + self.typetarget = None + self.activetarget = None + + # FIXME: Use ReadCStringFromMemory. # FIXME: Support executing code. if len(args) >= 1 and args[0] != '': gdb.execute ("symbol-file") gdb.execute ("symbol-file %s" % args[0]) else: - self.typetarget = self.debugger.GetSelectedTarget() + for i in range(0, self.debugger.GetNumTargets()): + target = self.debugger.GetTargetAtIndex(i) + target_name = str(target) + print('Target {} is "{}"'.format(i, target_name)) + if target_name.find('GdbSyms') >= 0: + self.typetarget = target + elif target_name.find('No executable module.') >= 0: + self.activetarget = target + + if not self.typetarget: + print('Cannot find GdbSyms target!') + return + + if not self.activetarget: + print('Cannot find target with full memory access!') + return + + # Force into full memory target. + self.debugger.SetSelectedTarget(self.activetarget) est = self.search_est () if est == self.EINVAL: diff --git a/Debug/runlldb.tool b/Debug/runlldb.tool index f2eeaaba..c9ae6eb1 100755 --- a/Debug/runlldb.tool +++ b/Debug/runlldb.tool @@ -26,7 +26,7 @@ fi "$LLDB" -o "settings set plugin.process.gdb-remote.target-definition-file Scripts/x86_64_target_definition.py" \ -o "gdb-remote $LLDB_PORT" \ - -o "target modules add GdbSyms/Bin/X64_CLANGDWARF/GdbSyms.debug" \ + -o "target create GdbSyms/Bin/X64_CLANGDWARF/GdbSyms.debug" \ -o "command script import Scripts/lldb_uefi.py" \ -o "command script add -c lldb_uefi.ReloadUefi reload-uefi" \ -o "reload-uefi" \