summaryrefslogtreecommitdiff
path: root/misc
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-10-04 14:00:39 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-10-04 14:00:39 +0000
commit103a0b9869c04d9522a4233f1f43a97cc91c5ae3 (patch)
tree65ec1e9c125ab6eb68038880e3b6e58466f5b945 /misc
parentc4e433a83a3f2d0baed425c8467af50c46bdfd6b (diff)
downloadbundler-103a0b9869c04d9522a4233f1f43a97cc91c5ae3.tar.gz
lldb_rp: support Symbol [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64914 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'misc')
-rwxr-xr-xmisc/lldb_cruby.py11
1 files changed, 11 insertions, 0 deletions
diff --git a/misc/lldb_cruby.py b/misc/lldb_cruby.py
index 266a024e2e..d411b32ecf 100755
--- a/misc/lldb_cruby.py
+++ b/misc/lldb_cruby.py
@@ -55,6 +55,9 @@ def fixnum_p(x):
def flonum_p(x):
return (x&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG
+def static_sym_p(x):
+ return (x&~(~0<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG
+
def append_command_output(debugger, command, result):
output1 = result.GetOutput()
debugger.GetCommandInterpreter().HandleCommand(command, result)
@@ -92,6 +95,11 @@ def lldb_rp(debugger, command, result, internal_dict):
print >> result, num >> 1
elif flonum_p(num):
append_command_output(debugger, "print rb_float_value(%0#x)" % val.GetValueAsUnsigned(), result)
+ elif static_sym_p(num):
+ if num < 128:
+ print >> result, "T_SYMBOL: %c" % num
+ else:
+ print >> result, "T_SYMBOL: (%x)" % num
elif num & RUBY_IMMEDIATE_MASK:
print >> result, 'immediate(%x)' % num
else:
@@ -120,6 +128,9 @@ def lldb_rp(debugger, command, result, internal_dict):
print >> result, val.GetValueForExpressionPath("->as.heap")
else:
print >> result, val.GetValueForExpressionPath("->as.ary")
+ elif flType == RUBY_T_SYMBOL:
+ tRSymbol = target.FindFirstType("struct RSymbol").GetPointerType()
+ print >> result, val.Cast(tRSymbol).Dereference()
elif flType == RUBY_T_ARRAY:
tRArray = target.FindFirstType("struct RArray").GetPointerType()
val = val.Cast(tRArray)