llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-lldb Author: Med Ismail Bennani (medismailben) <details> <summary>Changes</summary> This patch addresses 2 issues: 1. It makes registers available on non-crashed threads all the time 2. It fixes arm64 registers parsing for registers that don't use the `x` prefix (`fp` -> `x29` / `lr` -> `x30`) --- Full diff: https://github.com/llvm/llvm-project/pull/145104.diff 2 Files Affected: - (modified) lldb/examples/python/crashlog.py (+4-4) - (modified) lldb/examples/python/crashlog_scripted_process.py (+7-5) ``````````diff diff --git a/lldb/examples/python/crashlog.py b/lldb/examples/python/crashlog.py index 5f07cda2892ab..bb20f3a25c1c1 100755 --- a/lldb/examples/python/crashlog.py +++ b/lldb/examples/python/crashlog.py @@ -777,10 +777,10 @@ def parse_threads(self, json_threads): if json_thread.get("triggered", False): self.crashlog.crashed_thread_idx = idx thread.crashed = True - if "threadState" in json_thread: - thread.registers = self.parse_thread_registers( - json_thread["threadState"] - ) + if "threadState" in json_thread: + thread.registers = self.parse_thread_registers( + json_thread["threadState"] + ) if "queue" in json_thread: thread.queue = json_thread.get("queue") self.parse_frames(thread, json_thread.get("frames", [])) diff --git a/lldb/examples/python/crashlog_scripted_process.py b/lldb/examples/python/crashlog_scripted_process.py index be0ed49d35904..f54a8df0479e7 100644 --- a/lldb/examples/python/crashlog_scripted_process.py +++ b/lldb/examples/python/crashlog_scripted_process.py @@ -123,11 +123,6 @@ def get_process_metadata(self): class CrashLogScriptedThread(ScriptedThread): def create_register_ctx(self): - if not self.has_crashed: - return dict.fromkeys( - [*map(lambda reg: reg["name"], self.register_info["registers"])], 0 - ) - if not self.backing_thread or not len(self.backing_thread.registers): return dict.fromkeys( [*map(lambda reg: reg["name"], self.register_info["registers"])], 0 @@ -135,8 +130,15 @@ def create_register_ctx(self): for reg in self.register_info["registers"]: reg_name = reg["name"] + reg_alt_name = None + if "alt-name" in reg: + reg_alt_name = reg["alt-name"] if reg_name in self.backing_thread.registers: self.register_ctx[reg_name] = self.backing_thread.registers[reg_name] + elif reg_alt_name and reg_alt_name in self.backing_thread.registers: + self.register_ctx[reg_name] = self.backing_thread.registers[ + reg_alt_name + ] else: self.register_ctx[reg_name] = 0 `````````` </details> https://github.com/llvm/llvm-project/pull/145104 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits