mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
[ci skip][Feature #18910][lldb] Dedup lldb_init
by moving it fully into RbBaseCommand
This commit is contained in:
parent
b26aec9daa
commit
92603bbd69
Notes:
git
2022-08-19 02:26:11 +09:00
2 changed files with 31 additions and 28 deletions
|
@ -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 dump_page")
|
||||||
debugger.HandleCommand("command script add -f lldb_cruby.dump_page_rvalue dump_page_rvalue")
|
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")
|
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.")
|
print("lldb scripts for ruby has been installed.")
|
||||||
|
|
|
@ -8,12 +8,39 @@ class RbBaseCommand:
|
||||||
command = f"command script add -c {module_name}.{cls.__name__} {cls.program}"
|
command = f"command script add -c {module_name}.{cls.__name__} {cls.program}"
|
||||||
debugger.HandleCommand(command)
|
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):
|
def __init__(self, debugger, _internal_dict):
|
||||||
self.internal_dict = _internal_dict
|
self.internal_dict = _internal_dict
|
||||||
|
|
||||||
def __call__(self, debugger, command, exe_ctx, result):
|
def __call__(self, debugger, command, exe_ctx, result):
|
||||||
if not ("RUBY_Qfalse" in globals()):
|
if not ("RUBY_Qfalse" in globals()):
|
||||||
self._lldb_init(debugger)
|
RbBaseCommand.lldb_init(debugger)
|
||||||
|
|
||||||
self.build_environment(debugger)
|
self.build_environment(debugger)
|
||||||
self.call(debugger, command, exe_ctx, result)
|
self.call(debugger, command, exe_ctx, result)
|
||||||
|
@ -40,29 +67,3 @@ class RbBaseCommand:
|
||||||
result.Clear()
|
result.Clear()
|
||||||
result.write(output1)
|
result.write(output1)
|
||||||
result.write(output2)
|
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
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue