From d06201f205fe9d8f599352a5bafd53b34d25473d Mon Sep 17 00:00:00 2001 From: stephen-f0 <116006802+stephen-f0@users.noreply.github.com> Date: Mon, 22 Dec 2025 10:40:29 +0000 Subject: [PATCH] Add `displayed_registers` setting to allow showing of specific registers --- README.md | 1 + common/context_handler.py | 5 +++++ common/settings.py | 7 ++++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c702f36..999cc24 100644 --- a/README.md +++ b/README.md @@ -73,6 +73,7 @@ Settings are stored in a file `.llef` located in your home directory formatted a | rebase_addresses | Boolean | Enable/disable address rebase output | | rebase_offset | Int | Set the rebase offset (default 0x100000) | | show_all_registers | Boolean | Enable/disable extended register output | +| displayed_registers | List | Comma separated list of registers to display. Order is preserved. Use `default` as a placeholder for the built-in registers. e.g. `llefsettings set displayed_registers default,ymm0,ymm1` | | enable_darwin_heap_scan | Boolean | Enable/disable more accurate heap scanning for Darwin-based platforms. Uses the Darwin malloc introspection API, executing code in the address space of the target application using LLDB's evaluation engine | | max_trace_length | Int | Set the maximum length of the call stack backtrace to display | | stack_view_size | Int | Set the number of entries in the stack read to display | diff --git a/common/context_handler.py b/common/context_handler.py index 800818b..f92901b 100644 --- a/common/context_handler.py +++ b/common/context_handler.py @@ -310,6 +310,11 @@ def display_registers(self) -> None: for reg in self.arch().flag_registers: if reg.name in register_list: register_list.remove(reg.name) + elif self.settings.displayed_registers is not None: + register_list = self.settings.displayed_registers + if "default" in register_list: + default_id = register_list.index("default") + register_list = register_list[:default_id] + self.arch().gpr_registers + register_list[default_id + 1 :] else: register_list = self.arch().gpr_registers diff --git a/common/settings.py b/common/settings.py index 3e4765a..08dfc8c 100644 --- a/common/settings.py +++ b/common/settings.py @@ -1,7 +1,7 @@ """Global settings module""" import os -from typing import Union +from typing import List, Union from lldb import SBDebugger @@ -74,6 +74,11 @@ def rebase_offset(self) -> int: def show_all_registers(self) -> bool: return self._RAW_CONFIG.getboolean(self.GLOBAL_SECTION, "show_all_registers", fallback=False) + @property + def displayed_registers(self) -> List[str]: + displayed_str = self._RAW_CONFIG.get(self.GLOBAL_SECTION, "displayed_registers", fallback=None) + return displayed_str.split(",") if displayed_str is not None else None + @property def output_order(self) -> str: return self._RAW_CONFIG.get(self.GLOBAL_SECTION, "output_order", fallback=self.DEFAUL_OUTPUT_ORDER)