
1: define rp 2: if (VALUE)$arg0 & RUBY_FIXNUM_FLAG 3: printf "FIXNUM: %d\n", $arg0 >> 1 4: else 5: if ((VALUE)$arg0 & ~(~(VALUE)0<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG 6: printf "SYMBOL(%d)\n", $arg0 >> RUBY_SPECIAL_SHIFT 7: else 8: if $arg0 == RUBY_Qfalse 9: echo false\n 10: else 11: if $arg0 == RUBY_Qtrue 12: echo true\n 13: else 14: if $arg0 == RUBY_Qnil 15: echo nil\n 16: else 17: if $arg0 == RUBY_Qundef 18: echo undef\n 19: else 20: if (VALUE)$arg0 & RUBY_IMMEDIATE_MASK 21: echo immediate\n 22: else 23: set $flags = ((struct RBasic*)$arg0)->flags 24: if ($flags & RUBY_T_MASK) == RUBY_T_NONE 25: printf "T_NONE: " 26: print (struct RBasic *)$arg0 27: else 28: if ($flags & RUBY_T_MASK) == RUBY_T_NIL 29: printf "T_NIL: " 30: print (struct RBasic *)$arg0 31: else 32: if ($flags & RUBY_T_MASK) == RUBY_T_OBJECT 33: printf "T_OBJECT: " 34: print (struct RObject *)$arg0 35: else 36: if ($flags & RUBY_T_MASK) == RUBY_T_CLASS 37: printf "T_CLASS: " 38: print (struct RClass *)$arg0 39: else 40: if ($flags & RUBY_T_MASK) == RUBY_T_ICLASS 41: printf "T_ICLASS: " 42: print (struct RClass *)$arg0 43: else 44: if ($flags & RUBY_T_MASK) == RUBY_T_MODULE 45: printf "T_MODULE: " 46: print (struct RClass *)$arg0 47: else 48: if ($flags & RUBY_T_MASK) == RUBY_T_FLOAT 49: printf "T_FLOAT: %.16g ", (((struct RFloat*)$arg0)->value) 50: print (struct RFloat *)$arg0 51: else 52: if ($flags & RUBY_T_MASK) == RUBY_T_STRING 53: printf "T_STRING: " 54: set print address off 55: output (char *)(($flags & RUBY_FL_USER1) ? \ 56: ((struct RString*)$arg0)->as.heap.ptr : \ 57: ((struct RString*)$arg0)->as.ary) 58: set print address on 59: printf " bytesize:%d ", ($flags & RUBY_FL_USER1) ? \ 60: ((struct RString*)$arg0)->as.heap.len : \ 61: (($flags & (RUBY_FL_USER2|RUBY_FL_USER3|RUBY_FL_USER4|RUBY_FL_USER5|RUBY_FL_USER6)) >> RUBY_FL_USHIFT+2) 62: if !($flags & RUBY_FL_USER1) 63: printf "(embed) " 64: else 65: if ($flags & RUBY_FL_USER2) 66: printf "(shared) " 67: end 68: if ($flags & RUBY_FL_USER3) 69: printf "(assoc) " 70: end 71: end 72: printf "encoding:%d ", ($flags & RUBY_ENCODING_MASK) >> RUBY_ENCODING_SHIFT 73: if ($flags & RUBY_ENC_CODERANGE_MASK) == 0 74: printf "coderange:unknown " 75: else 76: if ($flags & RUBY_ENC_CODERANGE_MASK) == RUBY_ENC_CODERANGE_7BIT 77: printf "coderange:7bit " 78: else 79: if ($flags & RUBY_ENC_CODERANGE_MASK) == RUBY_ENC_CODERANGE_VALID 80: printf "coderange:valid " 81: else 82: printf "coderange:broken " 83: end 84: end 85: end 86: print (struct RString *)$arg0 87: else 88: if ($flags & RUBY_T_MASK) == RUBY_T_REGEXP 89: printf "T_REGEXP: " 90: set print address off 91: output ((struct RRegexp*)$arg0)->str 92: set print address on 93: printf " len:%d ", ((struct RRegexp*)$arg0)->len 94: if $flags & RUBY_FL_USER6 95: printf "(none) " 96: end 97: if $flags & RUBY_FL_USER5 98: printf "(literal) " 99: end 100: if $flags & RUBY_FL_USER4 101: printf "(fixed) " 102: end 103: printf "encoding:%d ", ($flags & RUBY_ENCODING_MASK) >> RUBY_ENCODING_SHIFT 104: print (struct RRegexp *)$arg0 105: else 106: if ($flags & RUBY_T_MASK) == RUBY_T_ARRAY 107: printf "T_ARRAY: len=%d ", ((struct RArray*)$arg0)->len 108: print (struct RArray *)$arg0 109: x/xw ((struct RArray*)$arg0)->ptr 110: else 111: if ($flags & RUBY_T_MASK) == RUBY_T_FIXNUM 112: printf "T_FIXNUM: " 113: print (struct RBasic *)$arg0 114: else 115: if ($flags & RUBY_T_MASK) == RUBY_T_HASH 116: printf "T_HASH: ", 117: if ((struct RHash *)$arg0)->ntbl 118: printf "len=%d ", ((struct RHash *)$arg0)->ntbl->num_entries 119: end 120: print (struct RHash *)$arg0 121: else 122: if ($flags & RUBY_T_MASK) == RUBY_T_STRUCT 123: printf "T_STRUCT: len=%d ", \ 124: (($flags & (RUBY_FL_USER1|RUBY_FL_USER2)) ? \ 125: ($flags & (RUBY_FL_USER1|RUBY_FL_USER2)) >> (RUBY_FL_USHIFT+1) : \ 126: ((struct RStruct *)$arg0)->as.heap.len) 127: print (struct RStruct *)$arg0 128: x/xw (($flags & (RUBY_FL_USER1|RUBY_FL_USER2)) ? \ 129: ((struct RStruct *)$arg0)->as.ary : \ 130: ((struct RStruct *)$arg0)->as.heap.len) 131: else 132: if ($flags & RUBY_T_MASK) == RUBY_T_BIGNUM 133: printf "T_BIGNUM: sign=%d len=%d ", \ 134: (($flags & RUBY_FL_USER1) != 0), \ 135: (($flags & RUBY_FL_USER2) ? \ 136: ($flags & (RUBY_FL_USER5|RUBY_FL_USER4|RUBY_FL_USER3)) >> (RUBY_FL_USHIFT+3) : \ 137: ((struct RBignum*)$arg0)->as.heap.len) 138: if $flags & RUBY_FL_USER2 139: printf "(embed) " 140: end 141: print (struct RBignum *)$arg0 142: x/xw (($flags & RUBY_FL_USER2) ? \ 143: ((struct RBignum*)$arg0)->as.ary : \ 144: ((struct RBignum*)$arg0)->as.heap.digits) 145: else 146: if ($flags & RUBY_T_MASK) == RUBY_T_FILE 147: printf "T_FILE: " 148: print (struct RFile *)$arg0 149: output *((struct RFile *)$arg0)->fptr 150: printf "\n" 151: else 152: if ($flags & RUBY_T_MASK) == RUBY_T_TRUE 153: printf "T_TRUE: " 154: print (struct RBasic *)$arg0 155: else 156: if ($flags & RUBY_T_MASK) == RUBY_T_FALSE 157: printf "T_FALSE: " 158: print (struct RBasic *)$arg0 159: else 160: if ($flags & RUBY_T_MASK) == RUBY_T_DATA 161: printf "T_DATA: " 162: print (struct RData *)$arg0 163: else 164: if ($flags & RUBY_T_MASK) == RUBY_T_MATCH 165: printf "T_MATCH: " 166: print (struct RMatch *)$arg0 167: else 168: if ($flags & RUBY_T_MASK) == RUBY_T_SYMBOL 169: printf "T_SYMBOL: " 170: print (struct RBasic *)$arg0 171: else 172: if ($flags & RUBY_T_MASK) == RUBY_T_VALUES 173: printf "T_VALUES: " 174: print (struct RValues *)$arg0 175: else 176: if ($flags & RUBY_T_MASK) == RUBY_T_BLOCK 177: printf "T_BLOCK: " 178: print (struct RBasic *)$arg0 179: else 180: if ($flags & RUBY_T_MASK) == RUBY_T_UNDEF 181: printf "T_UNDEF: " 182: print (struct RBasic *)$arg0 183: else 184: if ($flags & RUBY_T_MASK) == RUBY_T_NODE 185: printf "T_NODE(" 186: output (enum node_type)(($flags&RUBY_NODE_TYPEMASK)>>RUBY_NODE_TYPESHIFT) 187: printf "): " 188: print *(NODE *)$arg0 189: else 190: printf "unknown: " 191: print (struct RBasic *)$arg0 192: end 193: end 194: end 195: end 196: end 197: end 198: end 199: end 200: end 201: end 202: end 203: end 204: end 205: end 206: end 207: end 208: end 209: end 210: end 211: end 212: end 213: end 214: end 215: end 216: end 217: end 218: end 219: end 220: end 221: end 222: end 223: end 224: document rp 225: Print a Ruby's VALUE. 226: end 227: 228: define nd_type 229: print (enum node_type)((((NODE*)$arg0)->flags&RUBY_NODE_TYPEMASK)>>RUBY_NODE_TYPESHIFT) 230: end 231: document nd_type 232: Print a Ruby' node type. 233: end 234: 235: define nd_file 236: print ((NODE*)$arg0)->nd_file 237: end 238: document nd_file 239: Print the source file name of a node. 240: end 241: 242: define nd_line 243: print ((unsigned int)((((NODE*)$arg0)->flags>>RUBY_NODE_LSHIFT)&RUBY_NODE_LMASK)) 244: end 245: document nd_line 246: Print the source line number of a node. 247: end 248: 249: # Print members of ruby node. 250: 251: define nd_head 252: printf "u1.node: " 253: rp $arg0.u1.node 254: end 255: 256: define nd_alen 257: printf "u2.argc: " 258: p $arg0.u2.argc 259: end 260: 261: define nd_next 262: printf "u3.node: " 263: rp $arg0.u3.node 264: end 265: 266: 267: define nd_cond 268: printf "u1.node: " 269: rp $arg0.u1.node 270: end 271: 272: define nd_body 273: printf "u2.node: " 274: rp $arg0.u2.node 275: end 276: 277: define nd_else 278: printf "u3.node: " 279: rp $arg0.u3.node 280: end 281: 282: 283: define nd_orig 284: printf "u3.value: " 285: rp $arg0.u3.value 286: end 287: 288: 289: define nd_resq 290: printf "u2.node: " 291: rp $arg0.u2.node 292: end 293: 294: define nd_ensr 295: printf "u3.node: " 296: rp $arg0.u3.node 297: end 298: 299: 300: define nd_1st 301: printf "u1.node: " 302: rp $arg0.u1.node 303: end 304: 305: define nd_2nd 306: printf "u2.node: " 307: rp $arg0.u2.node 308: end 309: 310: 311: define nd_stts 312: printf "u1.node: " 313: rp $arg0.u1.node 314: end 315: 316: 317: define nd_entry 318: printf "u3.entry: " 319: p $arg0.u3.entry 320: end 321: 322: define nd_vid 323: printf "u1.id: " 324: p $arg0.u1.id 325: end 326: 327: define nd_cflag 328: printf "u2.id: " 329: p $arg0.u2.id 330: end 331: 332: define nd_cval 333: printf "u3.value: " 334: rp $arg0.u3.value 335: end 336: 337: 338: define nd_cnt 339: printf "u3.cnt: " 340: p $arg0.u3.cnt 341: end 342: 343: define nd_tbl 344: printf "u1.tbl: " 345: p $arg0.u1.tbl 346: end 347: 348: 349: define nd_var 350: printf "u1.node: " 351: rp $arg0.u1.node 352: end 353: 354: define nd_ibdy 355: printf "u2.node: " 356: rp $arg0.u2.node 357: end 358: 359: define nd_iter 360: printf "u3.node: " 361: rp $arg0.u3.node 362: end 363: 364: 365: define nd_value 366: printf "u2.node: " 367: rp $arg0.u2.node 368: end 369: 370: define nd_aid 371: printf "u3.id: " 372: p $arg0.u3.id 373: end 374: 375: 376: define nd_lit 377: printf "u1.value: " 378: rp $arg0.u1.value 379: end 380: 381: 382: define nd_frml 383: printf "u1.node: " 384: rp $arg0.u1.node 385: end 386: 387: define nd_rest 388: printf "u2.argc: " 389: p $arg0.u2.argc 390: end 391: 392: define nd_opt 393: printf "u1.node: " 394: rp $arg0.u1.node 395: end 396: 397: 398: define nd_recv 399: printf "u1.node: " 400: rp $arg0.u1.node 401: end 402: 403: define nd_mid 404: printf "u2.id: " 405: p $arg0.u2.id 406: end 407: 408: define nd_args 409: printf "u3.node: " 410: rp $arg0.u3.node 411: end 412: 413: 414: define nd_noex 415: printf "u1.id: " 416: p $arg0.u1.id 417: end 418: 419: define nd_defn 420: printf "u3.node: " 421: rp $arg0.u3.node 422: end 423: 424: 425: define nd_old 426: printf "u1.id: " 427: p $arg0.u1.id 428: end 429: 430: define nd_new 431: printf "u2.id: " 432: p $arg0.u2.id 433: end 434: 435: 436: define nd_cfnc 437: printf "u1.cfunc: " 438: p $arg0.u1.cfunc 439: end 440: 441: define nd_argc 442: printf "u2.argc: " 443: p $arg0.u2.argc 444: end 445: 446: 447: define nd_cname 448: printf "u1.id: " 449: p $arg0.u1.id 450: end 451: 452: define nd_super 453: printf "u3.node: " 454: rp $arg0.u3.node 455: end 456: 457: 458: define nd_modl 459: printf "u1.id: " 460: p $arg0.u1.id 461: end 462: 463: define nd_clss 464: printf "u1.value: " 465: rp $arg0.u1.value 466: end 467: 468: 469: define nd_beg 470: printf "u1.node: " 471: rp $arg0.u1.node 472: end 473: 474: define nd_end 475: printf "u2.node: " 476: rp $arg0.u2.node 477: end 478: 479: define nd_state 480: printf "u3.state: " 481: p $arg0.u3.state 482: end 483: 484: define nd_rval 485: printf "u2.value: " 486: rp $arg0.u2.value 487: end 488: 489: 490: define nd_nth 491: printf "u2.argc: " 492: p $arg0.u2.argc 493: end 494: 495: 496: define nd_tag 497: printf "u1.id: " 498: p $arg0.u1.id 499: end 500: 501: define nd_tval 502: printf "u2.value: " 503: rp $arg0.u2.value 504: end 505: 506: define rb_p 507: call rb_p($arg0) 508: end 509: 510: define rb_id2name 511: call rb_id2name($arg0) 512: end 513: 514: define rb_classname 515: call classname($arg0) 516: rb_p $ 517: print *(struct RClass*)$arg0 518: end 519: 520: define rb_backtrace 521: call rb_backtrace() 522: end