[Lldb-commits] [lldb] [lldb/crashlog] Make registers always available & fix x29/x30 parsing (PR #145104)
via lldb-commits
lldb-commits at lists.llvm.org
Fri Jun 20 14:18:13 PDT 2025
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
More information about the lldb-commits
mailing list