summaryrefslogtreecommitdiff
path: root/misc
diff options
context:
space:
mode:
authorMatt Valentine-House <matt@eightbitraptor.com>2022-08-18 11:44:25 +0100
committerPeter Zhu <peter@peterzhu.ca>2022-08-18 13:25:32 -0400
commit92603bbd6996000d2541edb22e0b2ecac646c3de (patch)
treeb7135b571f44fd8dd62e90005d559e635d6dbf29 /misc
parentb26aec9daa03a4f3da225e9e4f7a43e916928712 (diff)
[ci skip][Feature #18910][lldb] Dedup lldb_init
by moving it fully into RbBaseCommand
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/6129
Diffstat (limited to 'misc')
-rwxr-xr-xmisc/lldb_cruby.py4
-rw-r--r--misc/lldb_rb/rb_base_command.py55
2 files changed, 31 insertions, 28 deletions
diff --git a/misc/lldb_cruby.py b/misc/lldb_cruby.py
index e30acffc40..595d54dfab 100755
--- a/misc/lldb_cruby.py
+++ b/misc/lldb_cruby.py
@@ -741,5 +741,7 @@ def __lldb_init_module(debugger, internal_dict):
debugger.HandleCommand("command script add -f lldb_cruby.dump_page dump_page")
debugger.HandleCommand("command script add -f lldb_cruby.dump_page_rvalue dump_page_rvalue")
debugger.HandleCommand("command script add -f lldb_cruby.rb_id2str rb_id2str")
- lldb_init(debugger)
+
+ lldb_rb.rb_base_command.RbBaseCommand.lldb_init(debugger)
+
print("lldb scripts for ruby has been installed.")
diff --git a/misc/lldb_rb/rb_base_command.py b/misc/lldb_rb/rb_base_command.py
index 44b2996d80..bf98b67612 100644
--- a/misc/lldb_rb/rb_base_command.py
+++ b/misc/lldb_rb/rb_base_command.py
@@ -8,12 +8,39 @@ class RbBaseCommand:
command = f"command script add -c {module_name}.{cls.__name__} {cls.program}"
debugger.HandleCommand(command)
+ @classmethod
+ def lldb_init(cls, debugger):
+ target = debugger.GetSelectedTarget()
+ global SIZEOF_VALUE
+ SIZEOF_VALUE = target.FindFirstType("VALUE").GetByteSize()
+
+ value_types = []
+ g = globals()
+
+ imemo_types = target.FindFirstType("enum imemo_type")
+
+ for member in imemo_types.GetEnumMembers():
+ g[member.GetName()] = member.GetValueAsUnsigned()
+
+ for enum in target.FindFirstGlobalVariable("ruby_dummy_gdb_enums"):
+ enum = enum.GetType()
+ members = enum.GetEnumMembers()
+ for i in range(0, members.GetSize()):
+ member = members.GetTypeEnumMemberAtIndex(i)
+ name = member.GetName()
+ value = member.GetValueAsUnsigned()
+ g[name] = value
+
+ if name.startswith("RUBY_T_"):
+ value_types.append(name)
+ g["value_types"] = value_types
+
def __init__(self, debugger, _internal_dict):
self.internal_dict = _internal_dict
def __call__(self, debugger, command, exe_ctx, result):
if not ("RUBY_Qfalse" in globals()):
- self._lldb_init(debugger)
+ RbBaseCommand.lldb_init(debugger)
self.build_environment(debugger)
self.call(debugger, command, exe_ctx, result)
@@ -40,29 +67,3 @@ class RbBaseCommand:
result.Clear()
result.write(output1)
result.write(output2)
-
- def _lldb_init(self, debugger):
- target = debugger.GetSelectedTarget()
- global SIZEOF_VALUE
- SIZEOF_VALUE = target.FindFirstType("VALUE").GetByteSize()
-
- value_types = []
- g = globals()
-
- imemo_types = target.FindFirstType("enum imemo_type")
-
- for member in imemo_types.GetEnumMembers():
- g[member.GetName()] = member.GetValueAsUnsigned()
-
- for enum in target.FindFirstGlobalVariable("ruby_dummy_gdb_enums"):
- enum = enum.GetType()
- members = enum.GetEnumMembers()
- for i in range(0, members.GetSize()):
- member = members.GetTypeEnumMemberAtIndex(i)
- name = member.GetName()
- value = member.GetValueAsUnsigned()
- g[name] = value
-
- if name.startswith("RUBY_T_"):
- value_types.append(name)
- g["value_types"] = value_types